使用来自另一个查询的结果的类似SQL的条件

使用来自另一个查询的结果的类似SQL的条件,sql,sql-like,Sql,Sql Like,这样行吗 SELECT color FROM rawdata WHERE color LIKE ( SELECT TOP 1 color_condition FROM rules WHERE rules_id=1 ) 如果规则1的颜色条件为B%,这是否会从原始数据返回一个条目,其中color='Blue'?是 至少在SQL Server中是这样的,而且看起来您正在从顶部使用它 WITH rawdata(color) As ( SELECT 'Blue' UNION

这样行吗

SELECT color
FROM rawdata 
WHERE color LIKE (
    SELECT TOP 1 color_condition 
    FROM rules
    WHERE rules_id=1
)
如果规则1的颜色条件为
B%
,这是否会从原始数据返回一个条目,其中
color='Blue'

至少在SQL Server中是这样的,而且看起来您正在从
顶部使用它

WITH rawdata(color) As
(
SELECT 'Blue' UNION ALL SELECT 'Red'
), rules(color_condition,rules_id) AS
(
SELECT 'B%',1
)
SELECT color FROM rawdata 
WHERE color LIKE (SELECT TOP 1 color_condition 
                  FROM rules WHERE rules_id=1)
返回

color
-----
Blue

这个问题的答案是“是”,但我想知道是否是您的特定SQL构造引起了您的怀疑。就个人而言,我不希望看到谓词被子查询打断。看看您是否觉得这更容易阅读:

SELECT D1.color 
  FROM rawdata AS D1
 WHERE EXISTS (
               SELECT * 
                 FROM rules AS R1
                WHERE D1.color LIKE R1.color_condition 
                      AND R1.rules_id = 1
              );

@顺便说一句,你可以在这里测试一些特殊的查询