簡體   English   中英

MySQL獲取行僅包含具有特定值的行

[英]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.

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