You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL新手求助:如何将两个查询结合,用另一表结果替换硬编码日期?

解决方案:用子查询替换硬编码日期

嘿,别担心,新手刚开始接触SQL遇到这种问题太正常啦!我来帮你把两个查询合并起来,用第二个查询的结果替换第一个里的固定日期。

最简单的方式是把第二个查询作为子查询直接嵌入第一个语句中,替换掉原来的硬编码日期'2018-01-23'。完整的SQL语句如下:

SELECT Tap_Back.* 
FROM Tap_Back 
WHERE Tap_Back.time > (
    SELECT readingdates.readdate 
    FROM readingdates 
    WHERE readingdates.readdate <= CURRENT_DATE() 
    ORDER BY readingdates.readdate DESC 
    LIMIT 1
);

简单解释一下:

  • 括号里的子查询会先执行,它会从readingdates表中找出不晚于当前日期的最新一条记录的readdate值(因为用了ORDER BY ... DESC LIMIT 1)。
  • 然后这个值会被代入外层查询,作为Tap_Back.time的比较条件,这样就不用手动写死日期啦。

如果你的数据库支持的话,也可以用CTE(公共表表达式)来让代码更清晰,比如:

WITH LatestReadDate AS (
    SELECT readdate 
    FROM readingdates 
    WHERE readdate <= CURRENT_DATE() 
    ORDER BY readdate DESC 
    LIMIT 1
)
SELECT Tap_Back.* 
FROM Tap_Back, LatestReadDate
WHERE Tap_Back.time > LatestReadDate.readdate;

两种方式都能达到你的需求,子查询的写法更通用,适合大多数数据库。

内容的提问来源于stack exchange,提问作者Louis Van Der Walt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:35:10