我在这里有两列表格。
| column1 | column2 |
| A | 1 |
| B | 1 |
| C | 2 |
| D | 1 |
我正在尝试执行以下SELECT查询: 从第2列中选择一个值,如果第2列在具有Column 1 =“ A”的行中没有相同的值
SELECT column2 from mytable and column2 <> (SELECT * FROM mytable where column1 = 'A');
基本上,我试图执行一个查询,该查询仅在此处column2的值为“ 2”时才返回column1的值。 但是我正在做的项目将使用column2值作为随机值,所以我应该仅使用列名
抱歉,这太令人困惑了!
答案 0 :(得分:0)
使用相关子查询
select t1.* from mytable t1
where not exists ( select 1 from mytable t2 where t2.column2=t1.column2 and column1='A')
或使用not in
select t1.* from table_name t1 where t1.column2 not in ( select column2 from table_name where column1='A')
答案 1 :(得分:0)
查询的子查询返回多个值。因此,您必须使用NOT IN
而不是<>
:
SELECT column2
FROM mytable
WHERE column2 NOT IN (SELECT column2 FROM mytable WHERE column1 = 'A');
答案 2 :(得分:0)
您也可以使用join
,例如:
select t1.column2
from mytable t1 left join
(select distinct t2.column2 from mytable t2 where t2.column1='A') t3 on t1.column2=t3.column2
where t3.column2 is null