mysql - 在一条语句中多次使用子查询的结果

标签 mysql variables subquery

就像标题一样,我想将 where 子句的子查询的值存储在变量或 select 语句中。

我得到了这个效果很好的声明:

SELECT a.ticket_id, (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count FROM incidents a WHERE 7 < (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id);

在两个声明中:

SET @post =1;
SELECT a.ticket_id,@post FROM incidents a WHERE 5 < @post := (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id);

或者当然可以通过连接:

SELECT a.ticket_id,count(b.ticket_id) as count FROM incidents a JOIN im_data b ON a.ticket_id=b.ticket_id group by a.ticket_id having count(b.ticket_id) > 5

问题只是我想知道是否可以仅使用一个查询来执行相同的操作。 我尝试了很多不适用于 mysql 的方法:

SELECT a.ticket_id, (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count FROM incidents a WHERE 7 < count

SELECT a.ticket_id, count FROM incidents a WHERE 7 < (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id) as count;

SELECT a.ticket_id, count FROM incidents a WHERE 7 < @a (SET @a = (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id);

正如您可能认为的那样,它并不打算完成任务,而是要了解是否可以将子查询存储在变量或别名中,以便在同一个语句中再次使用它,而无需更多然后是一个语句,或者是否有任何其他方法可以在一个语句中多次使用值。

格雷兹·森特

最佳答案

我在研究 stackoverflow 上的问题时自己发现了它;-)。

join (select @post := 1)

成功了。

SELECT a.ticket_id,@post FROM incidents a JOIN (SELECT @post := 1)  b WHERE 5 < @post := (SELECT count(*) FROM im_data b WHERE a.ticket_id=b.ticket_id);

关于mysql - 在一条语句中多次使用子查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248351/

相关文章:

php - Ajax PHP MySQLI - 获取最后更新的行,但未准备好文档

python - 如何正确处理异常?

java - 如何将变量递增到字母表中的下一个或上一个字母?

MYSQL - 子查询问题

php - 使用 AJAX 将数组传递给 php 脚本

MySQL 错误 "right syntax to use near ' 更新”

javascript - 将变量 1 赋值给变量 2,将变量 2 赋值给变量 3 javascript

hibernate - 按多对多关系查询时从结果列表中排除项目

mySQL 在具有有效语法的子查询上给出语法错误

mysql - 向Mysql插入数据哪种方式更好、更安全?使用 Node 进行 SQL 操作?