我有這個 SQL 查詢
Select CONCAT(kafka_user_stream.FirstName,' ', kafka_user_stream.LastName) AS "Full Name",
kafka_user_stream.UID AS "User ID",
kafka_user_stream.CountryCode AS "Country",
kafka_user_stream.CreatedAt AS "Registration Date & Time",
COUNT(jackpotmessage_stream.UID) AS "Win Count"
FROM kafka_user_stream LEFT JOIN
jackpotmessage_stream ON jackpotmessage_stream.UID = kafka_user_stream.UID
WHERE "Type"='goldenTicketWin'
GROUP BY "Full Name", "User ID", "Country", "Registration Date & Time"
ORDER BY "Win Count" DESC
我想將其轉換為 Gorm。我可以使用它
err = s.db.Exec("...QUERY")
但我無法從上述查詢中提取資料。我需要提取上述所有欄位(全名、用戶 ID 等)并將它們存盤在一個結構中。
在上面的查詢中,kafka_user_stream 和 jackpot_message 是從 kafka 流中提取的表。我正在使用 go-gorm 和 go。
我嘗試了 Gorm 檔案以及其他一些參考資料,但找不到任何解決方案。將非常感謝任何線索、見解或幫助。
uj5u.com熱心網友回復:
使用本機go/mysql驅動程式,您應該使用Query()和Scan()方法從資料庫中獲取結果并將它們存盤在結構中,而不是Exec().
在 GORM 中,您可以使用SQL Builder進行自定義查詢:
type Result struct {
ID int
Name string
Age int
}
var result Result
db.Raw("SELECT id, name, age FROM users WHERE name = ?", 3).Scan(&result)
uj5u.com熱心網友回復:
我想出了一種與 Aykut 建議的略有不同的方法,但效果很好。
rows, _err := s.gdb.Raw(`Select CONCAT(kafka_user_stream.FirstName,' ', kafka_user_stream.LastName) AS "FullName",
kafka_user_stream.UID AS "UserID",
kafka_user_stream.CountryCode AS "Country",
kafka_user_stream.CreatedAt AS "CreatedAt",
COUNT(jackpotmessage_stream.UID) AS "WinCount"
FROM kafka_user_stream LEFT JOIN
jackpotmessage_stream ON jackpotmessage_stream.UID = kafka_user_stream.UID
WHERE "Type"='goldenTicketWin'
GROUP BY "FullName", "UserID", "Country", "CreatedAt"
ORDER BY "WinCount" DESC;`).Rows()
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346464.html
