mysql group by另一列

时间:2017-01-03 14:58:08

标签: mysql group-by distinct

我们说我有下表记录:

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

我想根据机器列检索一个不同的表,但是当涉及到"选择"在manual:false或true之间,真实胜过虚假。

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

我该怎么做?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:1)

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

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

example output source