SQL - IF选择A不在选择B然后选择B否则

时间:2016-08-08 20:58:42

标签: sql sql-server

我试图从SQL获得结果:

我有两个选择:

Select columnA from table1;

Select columnA, columnB, columnC from table2;

如果select 1的所有结果与select 2的%columnA%不同,我想返回第二个选择。

实施例: 选择1的结果;

Hot Dog
Hamburger
Fries

选择2的结果;

Shake | Chocolate | 100 cal
Fries | Curly | 200 cal

希望得到结果(在if之后):

Shake | Chocolate | 100 cal

2 个答案:

答案 0 :(得分:1)

您希望select2的结果已被过滤,因此请使用where子句:

Select columnA, columnB, columnC 
from table2
where columnA not in (select columnA from table1);

如果table1中的columnA可以为null,则必须将where columnA is not null添加到内部查询或使用相关not exists查询而不是not in

not exists

相同
Select columnA, columnB, columnC 
from table2
where not exists (select * from table1 where table1.columnA = table2.columnA);

如果您真的想使用通配符匹配,请更改后一个查询:

Select columnA, columnB, columnC 
from table2 t2
where not exists 
(
  select * 
  from table1 t1
  where t1.columnA like '%' + t2.columnA + '%'
);

答案 1 :(得分:1)

SELECT t2.*
FROM
    table2 t2
    LEFT JOIN table1 t1
    ON t2.ColumnA NOT LIKE '%' + t1.ColumnA + '%'
WHERE
    t1.ColumnA IS NULL