2011-07-13 85 views
0

我有這張表的列:Key,Type,Culture。選擇查詢和未知謂詞值

重點和文化是PK。

我知道查詢執行前的Key和Culture值。

select * from resources r where r.CULTURE = 'sk' and r.KEY = 'test'; 

但我想執行select,這將與同類型與文化=「SK」和密鑰=「測試」

+2

將'KEY'作爲字段名是不好的。這是大多數RDBMS中的保留字。 –

回答

2
SELECT * FROM resources AS r WHERE r.type = 
(SELECT type FROM resources s where s.culture= 'sk' and s.key= 'test') 

culture記錄還可以選擇其他所有記錄和key都是PK,所以你只能爲你的子查詢返回一個類型值。該結果用於獲取具有該類型的所有行。如果子查詢將返回多個值,則可以使用IN而不是=

+2

+1不要忘記在這個查詢中輸入'type'。 – Tomalak

+0

我想加入會更糟? – user256034

0

使用連接,它可以解決性能問題。

SELECT r.* 
FROM resources r 
    INNER JOIN resources r2 
     ON r.type = r2.type 
WHERE r2.CULTURE = 'sk' 
AND r2.KEY = 'test' 
+0

將執行更好,然後這個http://stackoverflow.com/questions/6676783/select-query-and-unknow-predicate-value/6676822#6676822? – user256034

+0

測試一下吧!這取決於索引,統計... –