簡體   English   中英

MySQL根據另一列的值選擇具有相同列值的多行

[英]MySQL SELECT multiple rows with same column value based on value from another column

我剛剛開始使用MySQL查詢,並且已經花了好幾天沒有找到解決方案,所以這里就是這樣。

表結構如下:

|         ID         |   TAG
| 111909684134416384 | WesternU
| 111909684134416384 | ldnon
| 111910470428008448 | ldnont
| 111910470428008448 | fb
| 111910605249712128 | LTC
| 111910605249712128 | ldnon
| 111911886139826176 | ldnont
| 111911886139826176 | WesternU

我想選擇,計算和列出TAG(s),其中一個相同ID的TAG列出了'ldnont'或'ldnon'。

基本上,從這個數據集,我想列出並計數:

WesternU (2)
fb (1)
LTC (1)

我已經能夠選擇和計數,但只有第一行具有重復ID的行。 提前感謝您的任何幫助。

 SELECT Tag, COUNT(*) FROM JodyTable 
      WHERE Tag NOT IN ('ldnon', 'ldnont')
         AND ID IN (SELECT ID FROM JodyTable WHERE Tag IN ('ldnon', 'ldnont'))

如果我正確理解你的問題 - 你想要計算具有相同id的記錄在表中有“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

這可能很復雜,但很簡單。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM