2017-01-03 90 views
0

比方说,我有以下表中的记录:MySQL的组基于另一列

Id | machine | manual | 
------------------------------------- 
    1 | 1  | false | 
    2 | 2  | false | 
    3 | 3  | false | 
    4 | 4  | false | 
    5 | 1  | true | 

我想要检索基于机器列不同的表,但是当涉及到“选择”手动之间:假或者真的是胜过虚假。

Id | machine | manual | 
------------------------------------- 
    5 | 1  | true | 
    2 | 2  | false | 
    3 | 3  | false | 
    4 | 4  | false | 

我该怎么做?

回答

1

一个mysql布尔列是一个tinyint类型,你可以这样做。

SELECT max(id), machine, max(manual) FROM machines group by machine; 

example output source

+0

是简单和优雅! –

+0

如果这对你有用,请检查一下。 –

+0

@Danubio尽管你的'接受',我非常怀疑这真的是你想要的。 – Strawberry

2
SELECT x.* 
    FROM my_table x 
    JOIN 
    (SELECT machine,MAX(manual) manual FROM my_table GROUP BY machine) y 
    ON y.machine = x.machine 
    AND y.manual = x.manual;