2013-07-29 67 views
0

這是我的MySQL查詢:MySQL查詢任何回報

SELECT a.hinh, cate.ten 
FROM (
     SELECT * FORM pro WHERE pro.id IN (20, 21) 
    ) AD a 
INNER JOIN cate c 
ON a.cateid = c.cate.id 

SELECT a.hinh, cate.ten 
FROM pro AS a 
INNER join cate c 
on a.cateid = c.cate.id 

輸出正確的結果。

你能提出建議我做錯了什麼?

+0

你能提供樣品數據嗎? –

回答

0

你的上面會給你錯誤。您拼寫爲AS的拼寫爲AD。也沒有必要使用子查詢時,您可以直接做這樣的:

SELECT a.hinh, cate.ten 
    FROM pro as a 
INNER JOIN cate 
    ON a.cateid = cate.id 
WHERE a.id IN (20,21) 

此外,您的查詢沒有返回任何東西,只有當ID 20和21是未在表中cate可用。如果你想獲得的記錄,即使ID 20和21是沒有在表中cate可用,您可以使用LEFT JOIN爲:

SELECT a.hinh, cate.ten 
    FROM pro as a 
    LEFT JOIN cate 
    ON a.cateid = cate.id 
WHERE a.id IN (20,21) 

這將從表pro返回的記錄,但將返回表中的NULLcate for ID 20 and 21.

+0

你能解釋我們如何從上面的邏輯上不同你的查詢..我的意思是這將解決OP問題,我不這麼認爲? –

+0

@AmitSingh - 是更新了答案。 – hims056

+0

'因爲我認爲是小姐拼寫只...我仍然不相信朋友...我認爲兩者都是一樣的...你的第二個查詢返回表1的所有行,我不知道OP是否想要它 –