我刚刚开始使用MySQL查询,并且已经花了好几天没有找到解决方案,所以这里就是这样。
表结构如下:
| ID | TAG
| 111909684134416384 | WesternU
| 111909684134416384 | ldnon
| 111910470428008448 | ldnont
| 111910470428008448 | fb
| 111910605249712128 | LTC
| 111910605249712128 | ldnon
| 111911886139826176 | ldnont
| 111911886139826176 | WesternU
我想选择,计算和列出TAG,其中一个相同ID的TAG列出了'ldnont'或'ldnon'。
基本上,从这个数据集中,我想列出并计算:
WesternU (2)
fb (1)
LTC (1)
我已经能够选择和计数,但只有第一行具有重复ID的行。 提前感谢您的任何帮助。
答案 0 :(得分:2)
SELECT Tag, COUNT(*) FROM JodyTable
WHERE Tag NOT IN ('ldnon', 'ldnont')
AND ID IN (SELECT ID FROM JodyTable WHERE Tag IN ('ldnon', 'ldnont'))
答案 1 :(得分:0)
如果我理解你的问题 - 你想要计算有多少具有相同身份证的记录在表中有“ldnon”或“ldnont”标签,不计算“ldnon”和“ldnont”本身
select outer.tag, count(*) as outer.num
from table as outer
where outer.tag NOT = "ldnon" AND outer.tag NOT = "ldnont"
outer.id IN (
select * from table as inner
where outer.id = inner.id AND
(inner.tag = "ldnon" OR onner.tag="ldnont")
)
group by outer.tag
order by outer.num
这个可能很复杂,但很简单。
答案 2 :(得分:0)
select t1.tag, count(*)
from table as t1, table as t2
where
t1.id = t2.id AND t1.tag NOT = t2.tag AND
t1.tag NOT = "ldnon" AND t1.tag NOT = "ldnont" AND
(t2.tag = "ldnon" OR t2.tag = "ldonont")
group by t1.tag