Mysql - 如何检索没有特定属性的所有项目?
问题描述:
我有一个表,如下Mysql - 如何检索没有特定属性的所有项目?
id key value section
-----------------------------------
CT1 | A | 25 | M-2
CT1 | B | 35 | M-1
CT2 | A | 70 | M-1
CT2 | C | 30 | M-2
CT2 | D | 20 | M-3
CT3 | B | 40 | M-2
CT3 | A | 15 | M-1
CT4 | B | 25 | M-1
CT4 | D | 25 | M-2
我需要一种方法来返回不具有某些关键的所有ID。例如:
是不具有'd' IDS: CT1,CT3,
是否有可能来从一个MySQL查询这样的结果?我也搜索了以前的问题。无法找到任何关闭。
答
您可以使用一个HAVING
条款分组:
SELECT id
FROM mytable
GROUP BY id
HAVING COUNT(CASE WHEN key = 'D' THEN 1 END) = 0
答
SELECT ID FROM YOURTABLE WHERE KEY NOT IN (选择YOURTABLE KEY)
答
您可以使用WHERE NOT子句。看看这个例子中,当值不是25
select * from table where not value=25
答
使用
SELECT id FROM table GROUP BY id HAVING count(key in ('D'))=0
你可以改变或者一些元素添加到列表中排除一个或多个ID这一切抓起。
+1
这将返回'CT1',因为它的键是'A',它不是'D' – Xenos
答
的NOT IN的方法必须是这样的:
SELECT id
FROM mytable
WHERE id NOT IN
(SELECT id
FROM mytable
WHERE key = 'D')
'COUNT(键= 'd')= 0'声音更轻 – Xenos
@Xenos是不会工作 –
@NeverBackDown行动,对不起,我的意思'SUM(keys ='D')= 0'因为是的,'COUNT(keys ='D')'会失败,因为COUNT'counts为“非空值”http://dev.mysql.com/doc/ refman/5.5/en/group-by-functions.html#function_count – Xenos