SQL查询语法错误,使用带有2列的select&<>

时间:2019-03-06 16:57:35

标签: sql

我在这里有两列表格。

| 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值作为随机值,所以我应该仅使用列名

抱歉,这太令人困惑了!

3 个答案:

答案 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