我想知道是否可以选择所有唯一行(通过按列名进行分组),其中另一列不包含特定值。 EG:
users table
+-------+-----------+
| NAME | COUNTRY |
+-------+-----------+
| Bob | Australia |
+-------+-----------+
| Bob | America |
+-------+-----------+
| Steve | Australia |
+-------+-----------+
| Sam | Australia |
+-------+-----------+
| Sam | America |
+-------+-----------+
我想要做的是按照NAME分组所有行,其中COUNTRY不包含美国。
PSUEDO-SQL :SELECT * FROM users GROUP BY名称国家不喜欢' America' (显然这不起作用,但需要澄清)
上面的输出:
+-------+-----------+
| NAME | COUNTRY |
+-------+-----------+
| Steve | Australia |
+-------+-----------+
可以这样做还是我接近错误的方式?
编辑:我不确定如何标题,如果有人有更好的建议,请更新/让我知道
答案 0 :(得分:2)
您不应将select *
与group by
一起使用。也许你想要:
SELECT name, country
FROM users
WHERE COUNTRY NOT LIKE 'America'
或者,如果您希望name
中没有'America'
:
SELECT name
FROM users
GROUP BY name
HAVING SUM(COUNTRY LIKE 'America') = 0;
答案 1 :(得分:1)
以下查询应该有效。
SELECT DISTINCT name, country FROM table WHERE country != 'America'
答案 2 :(得分:1)
SELECT name,country 来自用户 在哪里国家<> '美国' GROUP BY国家 有计数(名字)= 1
编辑:这是我的第一个Stack Overflow帖子,因此对建设性反馈持开放态度。期待听到你的想法。