【问题标题】:How to get all records by using 2 independent condition如何使用 2 个独立条件获取所有记录
【发布时间】:2015-03-31 05:21:45
【问题描述】:

我有一个名字和姓氏的列表。我想要一个通用查询,它使用名字和姓氏搜索每个人的大主表,并为每个人生成一个 ID 值。简而言之,我想要存在 ID 值的记录。

AGARWAL  NEERU
AHMAD    ANEES
AHUJA    KARUMA
AHUJA    SAM
AL-HATTAB    EYAD
ALATRASH     FIDA

所以我基本上想为这些输入检索一些结果,如下所示。

1221    AGARWAL  NEERU
2323    AHMAD    ANEES
4432    AHUJA    KARUMA
1542    AHUJA    SAM
8777    ALATRASH     FIDA

我能想到的唯一方法是在第一个名字和姓氏上分别使用 where 子句。它没有给我想要的,因为

select b.id,a.firstname, a.lastname from master_table a , ID_table b
where a.firstname in ('NEERU', 'ANEES', 'KARUMA', 'SAM', 'FIDA', 'EYAD')
and a.lastname in ('AGARWAL','AHMAD','AHUJA','ALATRASH')

现在上面的查询也会给我下面这样的人的输出:(你注意到人们的名字或姓氏组合与我想要的不同) 第3433章

【问题讨论】:

  • 你标记了这个mysqloracle,是哪一个?
  • 您在master_tableid_table 之间也有一个笛卡尔连接,我假设您实际上想要某种条件将这两者连接在一起。
  • 基本 SQL 知识:OR vs. AND

标签: mysql sql oracle join


【解决方案1】:

您需要分别测试每个名字/姓氏组合,并将它们与OR 结合起来。您还需要master_tableID_table 之间的加入条件

SELECT b.id,a.firstname, a.lastname 
FROM master_table a
JOIN ID_table b ON a.id = b.id
WHERE (a.firstname = 'NEERU' AND a.lastname = 'AGARWAL')
    OR (a.firstname = 'ANEES' AND a.lastname = 'AHMAD')
    OR (a.firstname = 'KARUMA' AND a.lastname = 'AHUJA')
    OR (a.firstname = 'SAM' AND a.lastname = 'AHUJA')
    OR (a.firstname = 'FIDA' AND a.lastname = 'ALATRASH')

【讨论】:

    【解决方案2】:

    您可以简单地使用“UNION”条件。
    您可以有 2 个具有多个条件的查询,并使用“UNION”合并结果

    例如:
    从表中选择 a、b、c,其中 a 为 NULL
    联盟
    SELECT a,b,c FROM table WHERE b IS NULL

    【讨论】:

    • 是的,谢谢,我想通了。所以有 2000 个 sql 选择被联合在一起。但是你有什么建议想出一个存储过程来解决这个问题。
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多