2011-03-09 25 views
1

请问像这样的工作SQL LIKE条件从另一个查询使用结果

SELECT color 
FROM rawdata 
WHERE color LIKE (
    SELECT TOP 1 color_condition 
    FROM rules 
    WHERE rules_id=1 
) 

如果规则1的color_condition将B%将这个返回从RAWDATA其中color = 'Blue'条目?

回答

1

是的。

至少在SQL Server的功能以及它看起来像你使用的是从TOP

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 
+0

好的,谢谢,我没有SQL Server测试,仍然在下载。 – Cilvic

+1

@Cilvic - 顺便说一句,你可以在这里[http://data.stackexchange.com/stackoverflow/q/94831/)[http://data.stackexchange.com/stackoverflow]中测试一些特别的查询。 /query/new](http://data.stackexchange.com/stackoverflow/query/new) –

0

的问题的答案是“是”,但我不知道这是你特定的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 
      ); 
相关问题