我有一张像这样的桌子:
ID, Val
具有以下值:
1,2
1,NULL
2,NULL
3,2
我怎样才能得到只有
1,2
2,null
3,2
这意味着获取所有行val = 2
,或者如果行的 ID 没有任何Val = 2
我有一张像这样的桌子:
ID, Val
具有以下值:
1,2
1,NULL
2,NULL
3,2
我怎样才能得到只有
1,2
2,null
3,2
这意味着获取所有行val = 2
,或者如果行的 ID 没有任何Val = 2
我将“获取所有 val = 2 的行,或者如果 ID 没有任何 Val = 2 的行”解释为:
select * from table x
where x.val = 2
or not exists (select 1 from table where id = x.id and val = 2)
尝试:
select t.id, t2.val
from (select distinct id from myTable) t
left join myTable t2 on t.id=t2.id and t2.val=2
SQLFiddle在这里。
SELECT DISTINCT *
FROM `table`
WHERE `Val` = 2
OR ( `ID` = 2 AND ( `Val` != 2 OR `Val` IS NULL ) )