繁体   English   中英

SQL选择查询排除某些值

[英]sql select query excluding certain values

要求是将ItemA和ItemE从搜索中排除,因为它们在columnB中包含值1。

在此处输入图片说明

最终结果应该是这样的

在此处输入图片说明

我尝试过SELECT * FROM my_table WHERE ColumnB not like '1' ,但这只是删除具有1的行,我希望将整个ITEM A / ITEM E删除为包含值1。

尝试:

SELECT *
FROM tablee
WHERE ColumnA NOT IN (
  SELECT columnA FROM tablee
  WHERE columnB = 1
);

要么

SELECT *
FROM tablee t1
WHERE NOT EXISTS(
  SELECT 1 FROM tablee t2
  WHERE t2.columnB = 1 and t1.columnA = t2.columnA
);

首先,我们进行子查询,以查找ColumnB ='1'的行。 然后,将子查询与匹配的ColumnA名称连接到主表。 现在,在ColumnB中具有不同行并带有“ 1”的项目现在将在那里具有一个值,由于左连接,其他行将仅具有NULL。 然后,我们使用一个位置仅查找没有匹配项的位置。

SELECT main.* from my_table AS main
LEFT JOIN (
    SELECT * FROM my_table 
    WHERE ColumnB = '1' 
    ) AS remove
ON remove.ColumnA = main.ColumnA
WHERE remove.ColumnB != '1'

要了解有关sql的更多信息,请通过w3schools入门

谢谢您的帮助。 我想出了解决方案

select * 
from test 
where columnA not in  (select columnA from test where ColumnB = 1 )

http://sqlfiddle.com/#!4/e0f07/2

尝试这个

select * from my_table where ColumnA!=ItemA and ColumnA!=ItemE;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM