簡體   English   中英

Select 不同的列,其中另一列不包含特定值

[英]Select distinct columns where another column does not contain a particular value

我有一張看起來像這樣的桌子

ID 名稱 col1
1個 一種
2個 C
3個 酒吧 一種
4個 酒吧

我想要 select col1沒有條目D的所有名稱

結果應該是“ foo

我試過了

SELECT DISTINCT name FROM table WHERE col1 != D

但由於 id 3,它返回“ foo ”和“ bar

避免過度使用DISTINCT

SELECT name
FROM table
GROUP BY name
HAVING SUM(col1='D') = 0

由於需要對名稱進行聚合GROUP BY name HAVING在聚合后應用。 col1='D'是一個 1/0 表達式,因此將它們相加,您希望 0 成為總數。

數據

CREATE TABLE mytable(
   id   INTEGER  NOT NULL 
  ,name VARCHAR(40) NOT NULL
  ,col1 VARCHAR(40) NOT NULL
);
INSERT INTO mytable
(id,name,col1) VALUES 
(1,'foo','A'),
(2,'foo','C'),
(3,'bar','A'),
(4,'bar','D');

使用Group_Concat()如下

select
name
/*,Group_Concat(col1)  col1 */
from mytable 
group by name
HAVING Group_Concat(col1) not like '%D%'

小提琴手

暫無
暫無

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

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