[英]Mysql fetch rows only contain a row with certain value
可以說,我的表具有以下行:
id | prop1 | prop2
______________________
1 foo a
2 bar a
3 foo b
4 bar b
5 foo c
現在在這種情況下,我想獲取按prop1
分組的行,但忽略不包含prop2=c
的行的組
因此,預期結果是:
1 foo a
3 foo b
5 foo c
請注意,示例中現在只有一組,但是我希望能夠全部獲得。 我如何實現這種方法?
您的預期結果未按prop1
分組。 如果它是按prop1
分組的,則結果中將只獲得一個記錄。
為了達到上述目的,我們可以使用子查詢編寫一個簡單的SELECT
,例如:
SELECT *
FROM table
WHERE prop1 IN (
SELECT prop1 FROM table WHERE prop2 = 'c'
);
如果不存在prop2 = c,則可以使用exist子句刪除所有行,請使用以下查詢。
select *
from your_table t1
where
exists (select 1 from your_table t2 where t1.prop1 = t2.prop1
and t2.prop2 = 'c')
解釋:如果存在針對該組的c,否則現有caluse將返回true。
以下查詢獲取prop2 ='c'(T1)的所有記錄,並將它們聯接到所有具有相同prop1的記錄(T2)上:
select T2.*
from TABLE T1
join TABLE T2 ON T1.prop1=T2.prop1
WHERE T1.prop2 = 'c'
GROUP BY id
SELECT * FROM table WHERE prop2 != "c" GROUP BY prop1
該行將刪除帶有C的att行,並在prop1上將所有其他內容分組
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.