Пусть я эти таблицыВыравнивание по левому краю с условием
create table bug (
id int primary key,
name varchar(20)
)
create table blocking (
pk int primary key,
id int,
name varchar(20)
)
insert into bug values (1, 'bad name')
insert into bug values (2, 'bad condition')
insert into bug values (3, 'about box')
insert into blocking values (0, 1, 'qa bug')
insert into blocking values (1, 1, 'doc bug')
insert into blocking values (2, 2, 'doc bug')
, и я хотел бы присоединиться к таблицам на id
столбцов и результат должен быть таким:
id name blockingName
----------- -------------------- --------------------
1 bad name qa bug
2 bad condition NULL
3 about box NULL
Это означает: Я хотел бы вернуть все строки из #bug . В столбце «blockingName» или NULL должно быть только значение «qa bug» (если не найдена соответствующая строка в #blocking)
Мой наивный выбор был так:
select * from #bug t1
left join #blocking t2 on t1.id = t2.id
where t2.name is null or t2.name = 'qa bug'
, но это не работает, потому что кажется, что условие применяется к первому #blocking таблицы, а затем к нему присоединяется.
Какое простейшее/типичное решение этой проблемы? (У меня есть решение с вложенным select, но я надеюсь, что есть что-то лучше)
MySQL или T-SQL? –
Что такое ПК на #блоке? –
Предпочитается MySQL, но T-SQL тоже в порядке. – stej