sql - 如何优化同一张表中的几个 "WHERE (Select .... ) = value"

标签 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 不适用于元组,所以我必须在这里进行 Inner Join 吗?

最佳答案

你可以试试这样的:

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

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

关于sql - 如何优化同一张表中的几个 "WHERE (Select .... ) = value",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990206/

相关文章:

sql - 将带有换行符的 SQL 查询输出粘贴到单个 Excel 单元格中

sql-server-2008 - 我的语法有什么问题?

mysql - 使用多个 AND 优化连接查询的最佳方法是什么?

MySQL 为其中的每个 id 获取最新的 3 行

php - 针对 PHP 数据检索进行优化的 MySQL 数据库设计

java - 选择哪里.... ms sql 2005 中需要电气状态

mysql - 为未找到的列显示空行或 0 的其余行

sql - SQL中如何复制表避免游标?

SQLite数据库优化

mysql - 如何在 MySql 中获取 2.5m 行的最后一条记录