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

如何用WITH子句的列结果作为WHERE IN的筛选列表?

关于WITH子句结果用于WHERE IN筛选的问题

首先明确:没有通用SQL语法可以直接把WITH子句定义的CTE中的某列当作列表,直接放在WHERE ... IN后面使用。

你尝试的WHERE created_date IN Max_Dates或者WHERE created_at IN Max_Dates.maxdate写法不符合SQL标准语法,这也是MySQL报错的原因——IN关键字后要么是用逗号分隔的字面量列表(比如IN ('2024-01-01', '2024-01-02')),要么是一个返回单列的子查询(必须用括号包裹)。

针对你的需求,正确的写法是把CTE作为子查询嵌套在IN后面,示例如下:

WITH Max_Dates AS (
    SELECT MAX(created_date) AS maxdate
    FROM transactions
    GROUP BY DATE(created_date)
)
SELECT *
FROM transactions
WHERE created_date IN (SELECT maxdate FROM Max_Dates);

不同数据库对CTE的语法支持存在细节差异,部分数据库可能有简化写法,但这种子查询的方式是所有支持CTE的数据库都兼容的通用写法。

内容的提问来源于stack exchange,提问作者David_Pz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:24:45