Раньше я никогда не использовал right join
и никогда не думал, что на самом деле мне это может понадобиться, и кажется немного неестественным. Но после того, как я подумал об этом, это может быть действительно полезно в ситуации, когда вам нужно внешнее соединение одной таблицы с пересечением многих таблиц, поэтому у вас есть такие таблицы:
[/g0]
И хочу получить такой результат:
[/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 ...
parseInt
является статическим методом класса Integer. Вы можете импортировать статические классы в свой класс и использовать их.
import static java.lang.Integer.parseInt;
...
@Test
public void parseIntTest() throws Exception {
String val = "10";
int intVal = parseInt(val);
}
Самое короткое, что я могу придумать, - это использовать функцию статического импорта, которая позволяет вам использовать статические методы другого класса в вашем собственном классе, при условии, что вы не нарушаете никаких правил о том, к каким методам вы можете обращаться. Поэтому, если вы напишите
import static java.lang.Integer.parseInt;
вверху файла, вы можете просто написать
month = parseInt(input);
, когда захотите его использовать. Я не могу представить ничего намного короче этого.