从许多行中选择值,或者是基于列的另一个值

时间:2013-07-30 10:20:09

标签: mysql sql group-by sql-order-by

在这样的表中:

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

2 个答案:

答案 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;

fiddle