在这样的表中:
id_fk | valid | val
----------------------
1 | 0 | val1A
1 | 1 | val1B
2 | 0 | val2A
3 | 1 | val3A
3 | 0 | val3B
我如何选择有效的= 1,或者如果id_fk不存在有效的那个,那么有效的是= 0?
基本上来自此表
id_fk | valid | val
----------------------
1 | 0 | val1A
1 | 1 | val1B
2 | 0 | val2A
3 | 1 | val3A
3 | 0 | val3B
我想选择这些(每行不同的id_fk):
id_fk | valid | val
----------------------
1 | 1 | val1B
2 | 0 | val2A
3 | 1 | val3A
答案 0 :(得分:4)
正如你所描述的那样:
SELECT *
FROM myTable a
WHERE valid = 1
OR NOT EXISTS
(
SELECT 1
FROM myTable b
WHERE b.id_fk = a.id_fk
AND b.valid = 1
)
答案 1 :(得分:1)
假设您的有效列仅包含1和0:
select * from (SELECT *
FROM Table1 a order by id_fk asc , valid desc) abc
group by id_fk;