在多行之间选择

时间:2016-12-06 13:07:14

标签: sql

我遇到这种情况:

我需要从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;

如何合并这两个查询?

谢谢大家!

1 个答案:

答案 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子句中。
  • 可以使用适当的索引优化每个子查询。
  • 处理后没有理由删除重复项。
  • ORON条款中的效率非常低。