大家好,我想知道的是,写这样的查询是否正确:
SELECT (SELECT t.name FROM type t WHERE t.id=a.id_type) AS TYPE,
a.title title,a.description description,u.name name,u.email email
FROM advert a
INNER JOIN user u ON u.id=a.id_user
WHERE a.id='2';
我测试了查询并且它有效,但是我想知道标准是否正确使用子查询然后加入。 对不起,如果我的问题很愚蠢,但我找不到答案。
答案 0 :(得分:2)
是的,这是允许的。它被称为correlated subquery。但是,我认为MySQL通常会更好地执行连接:
SELECT t.name AS type, a.title title,a.description description,u.name name,u.email email
FROM advert a
INNER JOIN user u ON u.id=a.id_user
LEFT JOIN type t ON t.id = a.id_type
WHERE a.id = '2'
答案 1 :(得分:0)
这是正确的,但我认为最好使用JOIN而不是子查询。此外,如果您使用子查询,则应确保它只返回一行。
SELECT t.name AS TYPE,
a.title title,a.description description,u.name name,u.email email
FROM advert a
INNER JOIN user u ON u.id=a.id_user
LEFT JOIN type t on t.id=a.id_type
WHERE a.id='2';