我有一個像這樣的查詢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 關注
- 96 瀏覽
添加回答
舉報
0/150
提交
取消