0

我有一张像这样的桌子:

ID, Val

具有以下值:

1,2
1,NULL
2,NULL
3,2

我怎样才能得到只有

1,2
2,null
3,2

这意味着获取所有行val = 2,或者如果行的 ID 没有任何Val = 2

4

3 回答 3

3

我将“获取所有 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)
于 2013-04-11T18:48:58.063 回答
0

尝试:

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在这里

于 2013-04-11T18:44:08.700 回答
0
SELECT DISTINCT *
FROM `table`
WHERE `Val` = 2
   OR ( `ID` = 2 AND ( `Val` != 2 OR `Val` IS NULL ) )
于 2013-04-11T18:45:22.577 回答