这是我的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
表中找不到cate
20和21时获取记录,则可以使用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
中的记录,但会在NULL
20和21的表cate
中返回ID
。