编写像这样的MySQL查询是否正确?

时间:2013-12-31 08:08:59

标签: mysql

大家好,我想知道的是,写这样的查询是否正确:

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';

我测试了查询并且它有效,但是我想知道标准是否正确使用子查询然后加入。 对不起,如果我的问题很愚蠢,但我找不到答案。

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';