【问题标题】:MySQL-extract a number from db and use it in same queryMySQL-从数据库中提取一个数字并在同一个查询中使用它
【发布时间】:2024-04-25 14:25:01
【问题描述】:

我的数据库中的table 1 有很多列,包括idtime。一个 id 被发送到服务器,然后我必须从表中提取其相应的时间(比如说t)并运行如下查询:

SELECT * FROM(
(SELECT * FROM table1 WHERE time>t AND ...clause 1...) // query A
UNION
(SELECT * FROM table1 WHERE time>t AND ...clause 2...) // query B
) h LIMIT 24;

如何在上述查询中包含一个提取t 并使其可供查询A 和查询B 访问的子查询?

【问题讨论】:

  • 显示到table1结构
  • 发布示例数据和预期结果以阐明您想要什么。
  • @AlwaysSunny 正如我在问题中提到的,它有许多列,包括idtime。其他栏目不在我们的关注范围内。

标签: mysql sql select subquery


【解决方案1】:

我觉得你这里需要Mysql WITH(公用表表达式),

WITH CTE AS (
  SELECT * FROM table1 WHERE time>t
)

SELECT * FROM (
  (SELECT * FROM CTE AND ...clause 1...) // query A
UNION
 (SELECT * FROM CTE AND ...clause 2...) // query B
) h LIMIT 24;

【讨论】:

  • 谢谢。但问题是t 的值也是未知的,必须从表中查询。怎么样?!
  • 您实际上提到了一个很好的提示!我使用以下 WITH 子句解决了我的问题:WITH x AS (SELECT a.* from table1 a INNER JOIN (SELECT * FROM table1 WHERE id = '...') s ON (a.timestamp > s.timestamp))
  • @Soheil 很高兴它能以某种方式帮助你。
最近更新 更多