问题: 根据 VALUES 创建 INSERT 语句
作者: akolybelnikov创建于 2022年9月17日更新于 2025年2月17日
我一直在尝试构建一个查询,其结果如下:
INSERT INTO geo_table (name, geog)
SELECT col1, st_makepoint(col2, col3)
FROM (VALUES ($1, $2, $3)) temp (col1, col2, col3);但我一直无法以任何方式绑定值。我得到的最接近的结果是:
psql := sq.StatementBuilder.PlaceholderFormat(sq.Dollar)
sql, args, _ := psql.Insert("geo_table").Columns("name", "geog").
Select(
psql.Select("name", "st_makepoint(longitude, latitude)").
FromSelect(sq.Select("name", "longitude", "latitude"), "temp")
).Values(name, longitude, latitude).ToSql()这产生了:
INSERT INTO geo_table (name, geog)
SELECT name, ST_MakePoint(longitude, latitude)
FROM (SELECT name, longitude, latitude) AS temp然后出现了 ERROR: column \"name\" does not exist (SQLSTATE 42703) (这是完全正常的)。
另一种选择是将 VALUES 放入 WITH 查询中,但我还没有找到实现此操作的方法。
内容来源: Masterminds/squirrel