我有一个像这样的查询myQuery := "SELECT DISTINCT table1.id, table1.active, table2.active FROM table1 INNER JOIN table 2 ON table1.id = table2.foreign_id AND table2.active = true我正在使用MySQL。我必须选择以避免错误。table2.activeSELECT list; this is incompatible with DISTINCT in my sql我正在使用,但我认为问题更深。我无法将结果扫描到目标对象中,类型为指向接口切片的指针,因为有两个方面:sqlxerr := conn.Unsafe().Select(dest, myQuery)destinterface{}据我所知,不要在他们的名字中保留限定词,所以我基本上得到了两个名字只是,没有或。这意味着,在扫描到目标结构中时会覆盖。Columnssql.RowsColumnsactivetable1table2table2.activetable1.active让我们也假设它有另一种类型比(在这个简单的例子中没有多大意义,但在我的真实场景中确实如此)。我会收到一个错误,因为该值将具有错误的类型,要扫描到我的目标对象中。table1.activetable2.activetable2.active由于我不知道 中结构的性质,直接检查没有多大帮助,因为手动将这些值写入结构中感觉是不可能的。我可以获取带有一些反射的目标结构的所有字段名称,并将它们放入查询的部分(这就是我实际正在做的),但实际上并非如此。destRowsdestSELECT我还想知道我是否可以将上面的查询作为子查询,将其包装到外部查询中,而不会产生所有误导性列。但是,像这样的查询也无法与返回的所有其他列一起使用。也许我可以手动收集id并运行第二个查询,但这可能相当无效。SELECT id, active FROM table1 WHERE id IN ([query above])
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
Strawberry只是在注释中给出了解决方案:即使是子句中防止错误所需的列也可以别名。所以基本上SELECT
SELECT list; this is incompatible with DISTINCT in my sql error
SELECT DISTINCT table1.id, table1.active, table2.active as active2 FROM table1 INNER JOIN table 2 ON table1.id = table2.foreign_id AND table2.active = true
做这个技巧 - MySQL错误将消失,但该列不会妨碍扫描程序!
- 1 回答
- 0 关注
- 76 浏览
添加回答
举报
0/150
提交
取消