【问题标题】:SQL select syntax to compare list of values against sql tableSQL 选择语法将值列表与 sql 表进行比较
【发布时间】:2016-11-07 18:00:33
【问题描述】:

我有一个 3 列的 excel。列 1 姓,列 2 名,列 3 父名。 我从excel中导出了这些数据,并制作了一个这样的数据列表...... (马利、鲍勃、乔治); (杰克逊、迈克尔、保罗); (康纳、莎拉、凯瑟琳)等

在 SQL (2008 r2) 中,我有一个包含这 3 列(以及更多..)的表。 我想搜索我的表是否有从 excel 导出的人员 我在最后找到了一个反复选择和联合的解决方案,但是我拥有的行是 5000 导出的 excel 和 70000 的 sql 表,所以我认为这不是重复联合的最佳方式。 所以我的问题是是否有一种语法不需要一次又一次地重复 选择,而不是使用类似

的东西
select lastname,firstname,fathername from table where ....

(马利,鲍勃,乔治); (杰克逊、迈克尔、保罗); (康纳、莎拉、凯瑟琳)

非常感谢您的宝贵时间, 大力神

【问题讨论】:

  • 你能显示你的完整查询吗?和预期的结果。
  • 这是一个很好的起点。 spaghettidba.com/2015/04/24/…
  • 非常感谢您的回复。这是我在论坛的第一个问题,请耐心等待。
  • 非常感谢您的回复。这是我在论坛上的第一个问题,所以请耐心等待。我想搜索 excel 的哪些值在 sql 表中。我已经找到了自己的“解决方案”,但是......例如,我可以编写这样的 sql 查询 select lastname,firstname,fathername where lastname ='Marley' and firstname='bob' and Fathername=George union all select lastname, firstname,fathername where lastname ='Jackson' and firstname='Michael' and Fathername=Paul union all 依此类推。但是我有 5000 个名字要搜索,所以我问是否有办法写 1 个时间列名称和每个名称的 1 行

标签: sql-server sql-server-2008


【解决方案1】:

使用 IN...

....
WHERE 
   lastname IN ('Marley','Jackson','Connor') 
   AND firstname ('Bob','Michael','Sarah')
....

但是,这可能会返回意外结果...因为它不关联配对。 IE。如果有人被命名为“Sarah Marley”,他们将被退回。您可能希望将您的姓名连接成“全名”或使用其他一些关键字段。最后,更好的方法是将您的 FirstName、MiddleName 和 LastName 加载到 #TempTable 或 @TableVariable 和 INNER JOIN 它们到您的查询中,或者使用 WHERE EXISTS

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2021-07-14
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    相关资源
    最近更新 更多