2012-03-28 117 views
0

我有兩個字段userId和ebayitemId的表。以下是從表中的數據庫:數據庫將兩個查詢合併爲一個

userId  | ebayitemId 
12   | 1 
12   | 2 
12   | 3 
12   | 4 

在我的情況下,客戶端會與ebayitemId要求,看看有什麼其他項目都與該用戶列出(ebayitemId是唯一的)。到目前爲止,我使用兩個查詢來選擇用戶列出的所有項目。第一個查詢是

SELECT userId WHERE ebayitemId = '1' 

此查詢爲我獲得該用戶名的EBAYITEMID。

第二個查詢是

SELECT ebayitemId WHERE userId = '$userid' 

這給了我ebayitemId 1,2,3和4

我的問題:有沒有辦法這兩個查詢合併爲一個查詢來獲得上述結果因爲只涉及一張表?

回答

0

查詢:

SELECT iu.ebayitemId 
FROM t_items AS iu 
INNER JOIN t_items AS ii ON (iu.userId=ii.userId) 
WHERE (ii.ebayitemId= $item) 

如果你不婉t要選擇的第一個項目:

SELECT iu.ebayitemId 
FROM t_items AS iu 
INNER JOIN t_items AS ii ON (iu.userId=ii.userId) 
WHERE (ii.ebayitemId= $item) 
AND (iu.ebayitemId<>ii.ebayitemId) 

注意:IN語句的優化程度會降低。

+0

謝謝,作品完美。 – Hari 2012-03-28 20:14:19

0

它可以與

SELECT ebayitemId from table WHERE userId in (SELECT userId from table WHERE ebayitemId = '1') 
0

天真來完成:

SELECT ebayitemId 
FROM yourtable 
WHERE userId IN (
    SELECT userId 
    FROM yourtable 
    WHERE ebayitemId = '1' 
) 

注意還有其他方法對皮膚這隻貓與連接等

+0

這個也可以。 – Hari 2012-03-28 20:14:49