【问题标题】:SQL finding records in multiple columns based on the records in another columnSQL 根据另一列中的记录查找多列中的记录
【发布时间】:2013-01-01 06:02:51
【问题描述】:

我在执行以下任务时遇到问题。

我有一个显示 BOM 结构的视图 - viewBOMsApprRevisions:

PartNumL1 PartNumL2 PartNumL3 PartNumL4 PartNumL5

我有一个包含选定 PartNum 的表 - 17 条记录,

我想要做的是列出存在 PartNum(17 条记录)的视图中的所有记录。

我知道如何用一条记录做到这一点

SELECT *
FROM viewBOMsApprRevisions 
WHERE '11614' in (PartNumL1,PartNumL2,PartNumL3, PartNumL4, PartNumL5)

但我不知道如何使用另一个表中的记录列表。

非常感谢任何帮助。

【问题讨论】:

  • 您必须提供一些架构 (SHOW CREATE tableName)
  • 如果您想从视图中获取记录,其中另一个表中的值存在于其中一列中,那么您只需在 from 和 where 到另一个表之间添加连接,更改您的在哪里打开并将“11614”更改为另一个表中的列名。这是你的意思吗?

标签: sql sql-server tsql


【解决方案1】:

如果我了解您的要求,您需要一个基本的join。由于您没有提供表架构,因此这是一个通用示例:

SELECT        *
FROM          Table1
INNER JOIN    Table2 ON Table2.SomeKey = Table1.SomeKey
WHERE         '11614' IN(Table2.PartNumber)

【讨论】:

  • 我想你想移动WHERE子句
  • @bluefeet,哈哈。这就是我在同时编写 SQL... 时吃辣沙拉的结果
  • 真的,过滤(WHERE 子句)条件应该(并且取决于优化器,可能无论如何)成为JOIN 条件的一部分。
  • @Clockwork-Muse,我们不要批评一个示例查询,它旨在为某人指明正确的方向,创建时几乎没有要求,也不了解表架构...
【解决方案2】:

试试这样的:

SELECT *
FROM viewBOMsApprRevisions 
WHERE EXISTS (SELECT * from Partnum 
              WHERE Partnum.Partnumber in (PartNumL1,PartNumL2,PartNumL3,
                                           PartNumL4, PartNumL5))

【讨论】:

  • 罗斯,非常感谢,这正是我想要的。非常感谢。
猜你喜欢
  • 2021-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-28
  • 1970-01-01
  • 2019-09-30
  • 2022-08-19
相关资源
最近更新 更多