0

在这样的表中:

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
4

2 回答 2

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
)
于 2013-07-30T10:22:13.937 回答
1

假设您的有效列只有 1 和 0 :

select * from (SELECT *
FROM Table1 a order by id_fk asc , valid desc) abc
group by id_fk;

小提琴

于 2013-07-30T10:31:34.823 回答