2013-07-29 36 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是否想要它 –