使用多余的聚合列在MySQL中INSERT SELECT

时间:2009-06-16 23:39:10

标签: mysql

我想做一个insert select,其中select语句有聚合列供“HAVING”子句使用,但实际上我并不希望插入这些列。一个简单的例子:

INSERT INTO table1 ( a ) 
SELECT  a, MAX (b) AS maxb FROM table2
GROUP BY a
HAVING maxb = 1

当然,这不起作用,因为INSERT和SELECT中有不同数量的列。是否有简单的方法使这项工作?我希望我可以在INSERT字段列表中定义某种类型的空列,或者其他东西。我希望在SELECT语句中避免使用子查询,尽管如果有必要我可以这样做。

2 个答案:

答案 0 :(得分:1)

INSERT INTO table1 ( a ) 
SELECT a FROM (SELECT  a, MAX (b) AS maxb FROM table2
GROUP BY a
HAVING maxb = 1) t

答案 1 :(得分:1)

您可以像这样重写查询

INSERT INTO table1 ( a ) 
SELECT  a  FROM table2
GROUP BY a
HAVING  MAX (b) = 1