我有一个sql表,比如
docid State
12 MP
13 MP
14 MP
13 CG
14 CG
12 MH
13 MH
16 DL
我想要一个sql查询,在那里我可以得到一个结果,只有共同的“docid”为所有三个国家“mp”,“cg”,“mh”
喜欢
Docid
13
注意:状态是从用户id中输入的,其中states=“”
5条答案
按热度按时间sqserrrh1#
我刚刚使用sqlite3通过以下sql命令重现了您的场景:
然后,我可以查询您正在使用的内容:
它回来了
13
dm7nw8vv2#
这是一个关系划分问题。一种通用的方法是使用
having
计算state
可在下表中找到:这假设没有重复
(docid, state)
. 否则,您需要:e3bfsja23#
如果我对你的理解正确的话,不是一个优雅但正确的解决方案应该是:
mutmk8jj4#
我认为这可以解决你的问题:
e0uiprwp5#
如果您想查看docid的n个最常见的值以及您想要的状态,则增加1
sql服务器
并非所有数据库都支持这种语法。许多支持
LIMIT
```SELECT [docid],
COUNT([docid]) AS value_occurrence
FROM [SQLtable]
WHERE [state] = "what ever state you want"
GROUP BY [docid]
ORDER BY value_occurrence DESC
LIMIT 1;