2016-05-19 125 views
0

我试图建立一个SQL查询,但我收到以下错误:MYSQL:在子查询帮助WHERE子句

#1054 - Unknown column 'r.id' in 'where clause' 

这是我的查询:

SELECT *, COUNT(id) AS result_count 
    FROM rate_clicks AS rc 
    WHERE click_type = 'details' 
    AND created_at > 1463517035 
    AND rate <= (SELECT rate 
     FROM rates AS r 
     WHERE r.id = rc.rate_id) 
    GROUP BY rate_id 
    ORDER BY result_count DESC LIMIT 5 

我之前没有使用子查询,所以我认为这是我失败的地方。非常感谢您的帮助!

+2

删除反引号中的ID从r.id反引号或将[R反引号,并为'rc.rate_id'也做它 –

+0

你能分享哟你的表结构? – Jaumzera

回答

1

MySQL不接受子查询中父项的别名。你应该加入:

SELECT *, COUNT(id) AS `result_count` 
FROM `rate_clicks` AS `rc` 
WHERE `click_type` = 'details' AND `created_at` > 1463517035 
AND `rate` <= (SELECT `rate` FROM `rates` AS `r` 
       inner join `rate_clicks` as rc1 `r.id`=`rc1.rate_id`) 
GROUP BY `rate_id` 
ORDER BY `result_count` DESC LIMIT 5 
1

我发表它作为答案。你必须使用反引号错误

改变这一点:

WHERE `r.id`=`rc.rate_id` 

WHERE `r`.`id`=`rc`.`rate_id` 

样品

MariaDB [bb]> SELECT * FROM useindex i WHERE `i.num1`= 999 LIMIT 10; 
ERROR 1054 (42S22): Unknown column 'i.num1' in 'where clause' 
MariaDB [bb]> 
MariaDB [bb]> SELECT * FROM useindex i WHERE `i`.`num1`= 999 LIMIT 10; 
+-------+------+------+ 
| id | num1 | num2 | 
+-------+------+------+ 
| 511 | 999 | 686 | 
| 1878 | 999 | 687 | 
| 3241 | 999 | 686 | 
| 3245 | 999 | 688 | 
| 4608 | 999 | 687 | 
| 5971 | 999 | 685 | 
| 5975 | 999 | 687 | 
| 7338 | 999 | 686 | 
| 8705 | 999 | 687 | 
| 10068 | 999 | 686 | 
+-------+------+------+ 
10 rows in set (0.00 sec) 

MariaDB [bb]>