我一直在嘗試獲取一個 MySQL 查詢,該查詢使用左連接與 group_concat 相結合來獲取給定用戶的所有個人資料照片的 Amazon S3 路徑。我想要的是 photo_keys 聚合列是 group_concat() 函式的結果,當用戶沒有個人資料圖片時,它變成一個空字串而不是 null。
有很多類似的問題,其中列的值取決于某些條件(即使用 case/when 陳述句或 if 陳述句),但它們沒有將 group_concat 與左連接結合使用的復雜因素。
我從什么開始(作業代碼,但不是所需的行為 => photo_keys 當用戶沒有個人資料圖片時為空而不是空字串)
SELECT u.*, GROUP_CONCAT(pps.photo_key ORDER BY pps.is_primary DESC) as photo_keys
FROM users u
LEFT JOIN profile_images pps ON u.id=pps.user_id
WHERE u.id = "555555555"
GROUP BY u.id`
我嘗試過的(這更像是偽代碼)
SELECT u.*, GROUP_CONCAT(pps.photo_key ORDER BY pps.is_primary DESC) as photo_keys, COUNT(*) as numImages
CASE
WHEN numImages = 0 THEN photo_keys = ""
END
FROM users u
LEFT JOIN profile_images pps ON u.id=pps.user_id
WHERE u.id = "5555555555"
GROUP BY u.id`
非常感謝你的幫助。-杰
uj5u.com熱心網友回復:
用 IFNULL 包裹結果就行了。
SELECT u.*, IFNULL(GROUP_CONCAT(pps.photo_key ORDER BY pps.is_primary DESC), '') as photo_keys
FROM users u
LEFT JOIN profile_images pps ON u.id=pps.user_id
WHERE u.id = "555555555"
GROUP BY u.id`
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315210.html
上一篇:合并或連接三個DataFrames,其中所有三個DataFrames包含四個相同的列和一個唯一的列
下一篇:與另外兩個列上的SQLJOIN
