如何获得某个字段为X的唯一行列表?

时间:2017-03-15 23:53:26

标签: mysql

使用下表,我想获取每个UNIQUE表单的id,form,value,其中value = 1.我已尝试select id, form, value from tableName group by form但查询返回ID 1和6,而不是ID 2和4就像我想要的那样。

编辑1& 2:我试图在左外连接的子查询中使用它,但我只是想获取一个值为= 1的所有表单的列表(如果存在),否则值= 0结果,为了在我的加入中使用。如果我使用select id, form, value from tableName where value=1 group by form我没有获得a2或b1表格。

id  form  value    
---|-----|------------
1  | a1  | 0
2  | a1  | 1
5  | a2  | 0 
3  | b1  | 0 
4  | c1  | 1 
6  | c1  | 0 

我想要的结果是:

id  form  value    
---|-----|------------
2  | a1  | 1
5  | a2  | 0 
3  | b1  | 0 
4  | c1  | 1 

1 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?

SELECT t.id, q.form, q.value
  FROM (
  SELECT form, MAX(value) value
    FROM table1
   GROUP BY form
) q JOIN table1 t 
    ON q.form = t.form
   AND q.value = t.value

输出:

| id | form | value |
|----|------|-------|
|  2 |   a1 |     1 |
|  5 |   a2 |     0 |
|  3 |   b1 |     0 |
|  4 |   c1 |     1 |

SQLFiddle