2017-03-15 35 views
0

用下面的表格,我想从where value = 1的每个UNIQUE表单获得一个id,form,value。我试过select id, form, value from tableName group by form,但是查询返回的是id1和6,而不是id2和4,就像我想要的那样。我试图在一个左外部连接的子查询中使用它,但我只是试图获得值为1的所有窗体的列表(如果它存在),否则值= 0的结果,以便在我的加入中使用。如果我使用select id, form, value from tableName where value=1 group by form,我不会收到a2或b1表格。如何获得某个字段为X的行的唯一列表?

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 
+0

MySQL是如何应该知道 “你想要的”,如果你不把它放在查询?你对'WHERE'熟悉吗? – zerkms

+0

不知道我明白你想要什么作为查询的最终结果 –

+0

@zerkms请参阅编辑。感谢/抱歉。 – Atom999

回答

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

+0

是的,谢谢!我没有想过只是首先获取表单和max(value)的列表,然后像原始表一样从原始表中加入id。好极了,现在我将在我的工具包中继续推进新的方法。再次感谢,祝你有美好的一天! – Atom999

+0

非常欢迎。很高兴为你工作。 :) – peterm

相关问题