看起来评论中的建议可能已经解决了你的问题,因为你只有一个表。
不过,为了展示在更一般的情况下如何使用EXISTS
,这里给出一个示例:
select 1
只是一个惯例,它是一个占位符表达式。对于EXISTS
而言,它只关心结果集是否非空,所以select 'taco salad'
同样可以工作。
Fiddle在线演示:https://dbfiddle.uk/bAKHv6ir
创建两个表:
base_table
存储要搜索的值
some_values
存储三个可能包含搜索值的列
插入一些示例数据后,执行如下查询:
-- 创建基础表
CREATE TABLE base_table (
search_value INTEGER
);
-- 创建包含三个值的表
CREATE TABLE some_values (
first_value INTEGER,
second_value INTEGER,
third_value INTEGER
);
-- 插入基础表数据
INSERT INTO base_table VALUES
(1),
(9),
(11),
(20);
-- 插入含有多个值的表数据
INSERT INTO some_values VALUES
(1,2,3),
(4,5,6),
(7,8,9);
-- 使用EXISTS进行查询
SELECT *
FROM base_table bt
WHERE EXISTS
(
SELECT 1
FROM some_values sv
WHERE bt.search_value IN (sv.first_value, sv.second_value, sv.third_value)
);