[英]Mysql: Using GROUP_CONCAT & FIND_IN_SET in where without having or subquery
[英]Using GROUP_CONCAT with FIND_IN_SET in mysql WHERE clause
我有这个查询,并想使用学生电子邮件从表中获取约会数据,但它收到此错误Unknown column 'stu' in 'where clause'
select a.*, GROUP_CONCAT(e.value) as stu FROM wp_ea_appointments a join
wp_ea_fields e on a.id = e.app_id WHERE a.date > DATE('2019-02-14') AND
FIND_IN_SET('jan@gmail.com' , stu ) GROUP BY a.id
FIND_IN_SET
条件应该包含在HAVING
语句而不是WHERE
语句中,因为您要在分组后过滤数据
SELECT a.*,
GROUP_CONCAT(e.value) as stu
FROM wp_ea_appointments a
JOIN wp_ea_fields e ON a.id = e.app_id
WHERE a.date > DATE('2019-02-14')
GROUP BY a.id
HAVING FIND_IN_SET('jan@gmail.com', stu)
您可以尝试使用子查询
select * from
(
select a.*, GROUP_CONCAT(e.value) as stu FROM wp_ea_appointments a join
wp_ea_fields e on a.id = e.app_id WHERE a.date > DATE('2019-02-14')
GROUP BY a.id
)A where FIND_IN_SET('jan@gmail.com' , stu )
使用HAVING
子句,但要正确表达逻辑:
SELECT a.*, GROUP_CONCAT(e.value) as stu
FROM wp_ea_appointments a JOIN
wp_ea_fields e
ON a.id = e.app_id
WHERE a.date > DATE('2019-02-14')
HAVING SUM( e.value = 'jan@gmail.com' ) > 0;
没有理由使用字符串连接来检查值是否存在。 字符串比较更昂贵且不太清楚。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.