2011-03-09 28 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 
      ); 
相關問題