如何通过SQL将表1最大ID关联到表2的所有查询结果行
解决方案
你不需要关联两张表,直接在查询字段中嵌入查询表1最大ID的子查询即可,该写法兼容所有主流SQL数据库:
SELECT (SELECT MAX(ID) FROM t_name) AS END_ID, T2D2 AS END_D2, T2D3 AS END_D3 FROM t_name2 t2 -- 你原本需要加的WHERE条件、CASE语句都可以正常加在这里 -- 比如 WHERE t2.t2d2 IN ('Black', 'Blue')
如果更习惯用JOIN写法,可以先将表1的最大ID计算为单行结果集再做交叉连接:
SELECT t1_max.max_id AS END_ID, t2.T2D2 AS END_D2, t2.T2D3 AS END_D3 FROM t_name2 t2 CROSS JOIN (SELECT MAX(ID) AS max_id FROM t_name) t1_max -- 同样可正常追加表2的筛选、逻辑处理语句
原写法错误原因
你之前的写法直接对全量交叉连接的结果集使用聚合函数MAX(),但未对t2.t2d2等非聚合字段添加GROUP BY子句,不符合SQL语法规范,因此会执行报错。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

