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

时间:2011-05-13 09:56:40

标签: sql sql-server-2008 sql-optimization

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

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不适用于元组,所以我必须在这里进行内部联接吗?

2 个答案:

答案 0 :(得分:7)

你可以尝试这样的事情:

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

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

答案 1 :(得分:0)

您可以尝试使用熔化操作员来熔化田地。在ORACLE PL / SQL中,您使用|| (双管),例如。