2015-11-19 81 views
-3

我有以下查询:MySQL查询语法错误内加入

(
SELECT * FROM salon_promo tt 
    INNER JOIN 
    (SELECT salon_id, MAX(promo_id) AS MaxDateTime 
     FROM salon_promo 
     GROUP BY salon_id) 
    groupedtt ON tt.salon_id = groupedtt.salon_id 
     AND tt.promo_id = groupedtt.MaxDateTime) 
    INNER JOIN salons USING (salon_id) 

而且recive以下错误信息:

错误:你在你的SQL语法错误;检查对应于您MariaDB的服务器版本使用附近的1号线

当我使用下面的查询“INNER JOIN使用(salon_id)沙龙”正确的语法手册:

SELECT * from salon_promo INNER JOIN salons USING (salon_id) 

一切工作正常。并从()查询:

(
SELECT * FROM salon_promo tt 
    INNER JOIN 
    (SELECT salon_id, MAX(promo_id) AS MaxDateTime 
     FROM salon_promo 
     GROUP BY salon_id) 
    groupedtt ON tt.salon_id = groupedtt.salon_id 
     AND tt.promo_id = groupedtt.MaxDateTime 
) 

工作也很好。什么会导致问题?

回答

2

您所查询的是错误

groupedtt.MaxDateTime) 
        ^^)should remove 

应该

groupedtt.MaxDateTime 

所以最终的查询是

SELECT * 
FROM salon_promo tt 
INNER JOIN (
    SELECT salon_id, MAX(promo_id) AS MaxDateTime 
    FROM salon_promo 
    GROUP BY salon_id) 
groupedtt ON tt.salon_id = groupedtt.salon_id 
AND tt.promo_id = groupedtt.MaxDateTime 
INNER JOIN salons USING (salon_id) 
+0

错误:列“salon_i d'in from子句不明确 –

+0

'MaxDateTime'是一个字段的名称。 ('... MAX(promo_id)AS MaxDateTime ...') – JJJ

+0

@Juhana是对的MAX(日期时间)不正确 –