我遇到这种情况:
我需要从tableA中选择其外键引用tableB的数据 喜欢: tableA.tableB_id = tableB id inform
OR
第二个限制是指在tableB上通知的邮政编码,表B中有初始邮政编码和最终邮政编码,以及表A上的单个邮政编码。
示例:
CREATE TABLE tableA (
id integer PRIMARY KEY,
tableB_id INTEGER,
postalCode varchar(10)
);
CREATE TABLE tableB (
id integer PRIMARY KEY,
InitialPostalCode varchar(10),
FinalPostalCode varchar(10)
);
表B是具有多个初始和最终邮政编码的 LIST 位置
我需要从tableA中选择tableB_id = tableB.id OR tableA.cep tableB.InitialPostalCode和tableB.FinalPostalCode
SELECT
id,
postalCode
FROM
tableA
WHERE
tableB_id = ID
OR postalCode BETWEEN...
SELECT
InitialPostalCode,
FinalPostalCode
FROM
tableB
WHERE
id = some ID;
如何合并这两个查询?
谢谢大家!
答案 0 :(得分:1)
这是你想要的吗?
SELECT a.id, a.postalCode
FROM tableA a
WHERE EXISTS (SELECT 1 FROM tableB b WHERE b.id = a.tableB_id) OR
EXISTS (SELECT 1 FROM tableB b WHERE a.cep BETWEEN b.InitialPostalCode AND b.FinalPostalCode);
我更喜欢使用EXISTS
,因为:
tableA
中的列,因此tableB
不需要 在FROM
子句中。OR
在ON
条款中的效率非常低。