MySQL:如何根据结果集中的条件仅返回一行

时间:2011-09-14 13:57:56

标签: mysql

我有下表:

id | group | value 
1  |   1   |   10
2  |   1   |   20
3  |   1   |   30
4  |   0   |   20
5  |   0   |   20
6  |   0   |   10

我想将组为1(= 30)的最高值和组为0的所有值返回到一个结果集中。

我必须在一个语句中执行此操作,我想我应该在SELECT语句中使用IF语句,但我无法弄清楚如何。任何人都可以帮我指出正确的方向吗?

2 个答案:

答案 0 :(得分:4)

(select max(value) from the_table where group = 1)
union
(select value from the_table where group = 0)

答案 1 :(得分:1)

如果(组+值)是唯一的,您也可以在没有联合的情况下执行此操作(由 Ray Toal 提出)

SELECT a.value
FROM table1 a    
WHERE a.`group`=0 or (a.`group`=1 AND a.value = 
 (SELECT MAX(value) FROM table1 b WHERE b.`group`=1))