mySQL 在 WHERE 子句中重用计算值

标签 mysql select where-clause

SELECT 
  table1.a,
  table1.b, 
  (SELECT b 
  FROM table2 
  WHERE table2.b - table1.a < 10 
  LIMIT 0,1) as test
FROM table1 
WHERE table1.b < test;

我正在尝试在查询的 WHERE 部分中使用 SELECT“变量”测试 中收到的结果。

知道如何做到这一点,而不必再次在 WHERE 中重新进行计算或进行任何操作吗?到目前为止,这就是我设法让它发挥作用的方法。

最佳答案

你不能在 WHERE 中使用它,但你可以在 HAVING 中使用它。在那里你就有了你的结果。但这不是很高效。

SELECT table1.a, table1.b,
  (select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1) as test 
FROM table1
HAVING table1.b<test

如果你想使用 WHERE,那么你也必须在这个位置创建你的 SUBSELECT

SELECT table1.a, table1.b,
  (select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1) as test 
FROM table1
WHERE table1.b < (select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1)

关于mySQL 在 WHERE 子句中重用计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45352216/

相关文章:

php - 在格式为 json 的字段中选择多个 ID

sql - 如果引用存在则连接表

postgresql - Postgres 查询比较两个日期是否等于边距

mysql - Persistent Volume 的 Kubernetes 存储位置在哪里?

mysql - 如何将 MySQL 数据与代码一起保存/分发?

ruby-on-rails - 使用带有数字范围的步长的 rails 生成选择标签

sql - 应用左连接之前过滤表

mysql - innodb b树中的内部节点如何物理存储?

mysql:在触发器内使用过程

postgresql - 内部连接的 SQL where 子句