заменить команду Java пользовательским ключевым словом?

Раньше я никогда не использовал right join и никогда не думал, что на самом деле мне это может понадобиться, и кажется немного неестественным. Но после того, как я подумал об этом, это может быть действительно полезно в ситуации, когда вам нужно внешнее соединение одной таблицы с пересечением многих таблиц, поэтому у вас есть такие таблицы:

enter image description here [/g0]

И хочу получить такой результат:

enter image description here [/g1]

Или, в SQL (MS SQL Server):

declare @temp_a table (id int)
declare @temp_b table (id int)
declare @temp_c table (id int)
declare @temp_d table (id int)

insert into @temp_a
select 1 union all
select 2 union all
select 3 union all
select 4

insert into @temp_b
select 2 union all
select 3 union all
select 5

insert into @temp_c
select 1 union all
select 2 union all
select 4

insert into @temp_d
select id from @temp_a
union
select id from @temp_b
union
select id from @temp_c

select *
from @temp_a as a
    inner join @temp_b as b on b.id = a.id
    inner join @temp_c as c on c.id = a.id
    right outer join @temp_d as d on d.id = a.id

id          id          id          id
----------- ----------- ----------- -----------
NULL        NULL        NULL        1
2           2           2           2
NULL        NULL        NULL        3
NULL        NULL        NULL        4
NULL        NULL        NULL        5

Итак, если вы переключитесь на left join, результаты не будут одинаковыми.

select *
from @temp_d as d
    left outer join @temp_a as a on a.id = d.id
    left outer join @temp_b as b on b.id = d.id
    left outer join @temp_c as c on c.id = d.id

id          id          id          id
----------- ----------- ----------- -----------
1           1           NULL        1
2           2           2           2
3           3           3           NULL
4           4           NULL        4
5           NULL        5           NULL

Единственный способ сделать это без правильного соединения - использовать общее выражение таблицы или подзапрос

select *
from @temp_d as d
    left outer join (
        select *
        from @temp_a as a
            inner join @temp_b as b on b.id = a.id
            inner join @temp_c as c on c.id = a.id
    ) as q on ...
1
задан Mixtape Mania 3 March 2019 в 19:15
поделиться

2 ответа

parseInt является статическим методом класса Integer. Вы можете импортировать статические классы в свой класс и использовать их.

import static java.lang.Integer.parseInt;

...

@Test
public void parseIntTest() throws Exception {
    String val = "10";
    int intVal = parseInt(val);
}
0
ответ дан Adam Macierzyński 3 March 2019 в 19:15
поделиться

Самое короткое, что я могу придумать, - это использовать функцию статического импорта, которая позволяет вам использовать статические методы другого класса в вашем собственном классе, при условии, что вы не нарушаете никаких правил о том, к каким методам вы можете обращаться. Поэтому, если вы напишите

import static java.lang.Integer.parseInt;

вверху файла, вы можете просто написать

month = parseInt(input);

, когда захотите его использовать. Я не могу представить ничего намного короче этого.

0
ответ дан Dawood ibn Kareem 3 March 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: