【发布时间】:2020-12-02 16:43:43
【问题描述】:
我有以下在 MySQL 中运行良好的查询:
SELECT *
FROM mytable
GROUP BY col2, col3, col4, col5, col6
这允许我从 mytable 中选择所有基于多列 col2, col3, col4, col5, col6 的值的唯一(不同)结果。
不幸的是,该查询不适用于 H2 和 DB2(它给出了 ...必须在 GROUP BY 列表中... 错误),我正在寻找一种通用且高效的替代方案。
我也尝试过以下一种:
SELECT t1.col1, t1.col2, t1.col3, t1.col4, t1.col5, t1.col6
FROM mytable t1
JOIN (SELECT t2.col2, t2.col3, t2.col4, t2.col5, t2.col6
FROM mytable t2
GROUP BY t2.col2, t2.col3, t2.col4, t2.col5, t2.col6) x
ON x.col1 = t1.col1
AND x.col2 = t1.col2
AND x.col3 = t1.col3
AND x.col4 = t1.col4
AND x.col5 = t1.col5
AND x.col6 = t1.col6;
但它非常慢(尝试使用 Docker MariaDB 本地实例),特别是因为我将在 INSERT INTO ... 查询中使用 SELECT,所以我需要一些高效的东西。
有什么帮助吗?
谢谢
【问题讨论】:
-
第二个查询的结果不等同于第一个查询的结果。如果启用了非标准 MySQL 特定扩展,则第一个查询仅在 MySQL 中“正常工作”。