私は次のようなテーブルを持っています:
ID, Val
次のような値で:
1,2
1,NULL
2,NULL
3,2
どうすれば入手できますか
1,2
2,null
3,2
これは、 ですべての行を取得することを意味しval = 2
ます。Val = 2
私は次のようなテーブルを持っています:
ID, Val
次のような値で:
1,2
1,NULL
2,NULL
3,2
どうすれば入手できますか
1,2
2,null
3,2
これは、 ですべての行を取得することを意味しval = 2
ます。Val = 2
「val = 2 のすべての行を取得するか、Val = 2 を持たない ID の行を取得する」を次のように解釈します。
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 ) )