left join两个表,其中我的变量小于5

时间:2017-01-03 15:33:35

标签: mysql sql

我创建一个查询,选择两个表并通过计算一个表中的字段来创建一个总变量。 例如:

 Table A:

 ID   |  email
 1    |  test@test
 2    |  test2@test
 3    |  test3@test

表B

ID | email_id  | username_id
 1  |  1        | 11
 2  |  1        | 22
 3  |  2        | 33

我的查询:

select a.id, a.email, count(c.id) as total
from tableA a
left join tableC c on c.email_id = a.id AND total <= 5
group by a.email LIMIT 1

输出:

 Unknown column 'total' in 'on clause

我需要选择总数<= 5的第一个“a.id”。我该怎么做?

3 个答案:

答案 0 :(得分:1)

逻辑SelectWhere子句之后处理,因此您不能在同一Where子句中使用别名。

使用HAVING子句

select a.id, a.email, count(c.id) as total
from tableA a
left join tableC c on c.email_id = a.id 
group by a.email 
Having count(c.id) <= 5
LIMIT 1

我认为Mysql允许你这样做

Having total <= 5

答案 1 :(得分:0)

尝试HAVING Count(c.id)&lt; = 5

答案 2 :(得分:0)

只是为了使这一点更清楚,因为已经提供了正确的答案 - 您不必使用HAVING子句,HAVING子句并不总是解决此问题问题

HAVING子句通常用于在聚合列上放置过滤器(sum,count,max,min等等),但是当您有一个计算列(例如colA + colB as calc_column)时,则另一种方法,也应该在这里工作,用另一个选择包装查询,然后新的列将在WHERE上可用:

SELECT * 
FROM (The query here ) s
WHERE s.total <= 5