0

これは私の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 

正しい結果を出力します。

私が間違っていることを教えてください。

4

1 に答える 1

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 が使用できない場合にのみ、クエリは何も返しませんcateIDtable で 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が返されますが、 20 と 21NULLのテーブルcateで返されます。ID

于 2013-07-29T04:00:57.747 に答える