如何从同一张表中优化几个“WHERE(Select ....)= value”

Posted

技术标签:

【中文标题】如何从同一张表中优化几个“WHERE(Select ....)= value”【英文标题】:how to optimize several "WHERE (Select .... ) = value" from same table 【发布时间】:2011-05-13 09:56:39 【问题描述】:

为我编写一个主题名称很难。但我可以举个例子:

WHERE   (SELECT [ID_Line] FROM [Event] WHERE [Event].[Name]  = [A].[Col]) = 2
AND     (SELECT [DataType] FROM [Event] WHERE [Event].[Name]  = [A].[Col]) = 2

当我真的需要类似的东西时,我正在处理 2 个查询:

WHERE   (SELECT [ID_Line],[DataType] FROM [Event] WHERE [Event].[Name]  = [A].[Col]) = 2,2

但是 SQL 不适用于元组,所以我必须在此处进行 Inner Join 吗?

【问题讨论】:

@gbn ms sql 2008 快递 【参考方案1】:

你可以试试这样的:

WHERE EXISTS (
    SELECT [ID_Line] FROM [Event] WHERE
        [Event].[Name]  = [A].[Col] AND
        [Event].[ID_Line] = 2 AND
        [Event].[DataType] = 2
)

如果您提供有关完整查询和数据库结构的更多信息,则可以给出更准确的答案。这可能不是最好的解决方案。

【讨论】:

【参考方案2】:

您可以尝试使用熔化运算符来熔化字段。在 ORACLE PL/SQL 中,您使用 || (双管),例如。

【讨论】:

以上是关于如何从同一张表中优化几个“WHERE(Select ....)= value”的主要内容,如果未能解决你的问题,请参考以下文章

根据同一张表的结果优化选择表中的所有行?

Mysql如何将数据从一个字段复制到同一张表中的另一个字段

MYSQL从同一张表中选择不同的记录

从具有不同条件的同一张表中获取数据[关闭]

从同一张表中找出两组数据之间的差异

从同一张表中最小的 4 个 ID 中选择一个随机 ID