我正在使用MySQL而且坚持 - 我想简单的问题。它看起来像这样:
我有一张桌子:
-----------------
id | name | age
-----------------
1 | abc | 0
2 | cde | 30
3 | abc | 30
4 | efg | 0
现在,我想选择名称和年龄,但选择所有条件和即将来临的条件: 如果有任何年龄为30岁的行选择它,否则选择年龄为0.如果同时存在30和0年龄(如上例所示),则只选择年龄= 30的行。如果只有年龄= 0的行 - 选择它。
使用上面的表格我希望得到这样的结果:
id | name | age
-----------------
2 | cde | 30
3 | abc | 30
4 | efg | 0
Mysql应忽略年龄为0的第一行,因为存在名称相同且年龄= 30的行。 我试过了
SELECT name, age FROM table WHERE CASE WHEN age = 30 THEN 1 ELSE age = 0 END
但是它选择了0和30年龄的多行。 希望你能帮帮我。
答案 0 :(得分:1)
不确定这是否正是您正在寻找的,但测试它并查看它是否有效:)
(SELECT id, name, age FROM myTable WHERE age = 30)
UNION
(SELECT id, name, age FROM myTable WHERE age = 0 ORDER BY id DESC LIMIT 1)
一起玩
(SELECT id, name, age FROM myTable WHERE age = 30)
UNION
(SELECT id, name, age
FROM mytable
WHERE age = 0
AND name NOT in(SELECT name FROM myTable WHERE age = 30)
ORDER BY id DESC)
带有op请求的