我有以下查詢,其中加入了幾個表。其中之一是profile_img
。此表格中包含上傳用戶的個人資料圖片,否則會給出profile_images/default.jpg
並且用戶不在profile_img
表格中,所以我需要進行排序以檢查他們是否不在該表格中,然後設置其個人資料圖像作爲默認值。在SQL查詢中使用else else
這是我的查詢。
SELECT f.*, u.*, p.*
FROM friends f
LEFT JOIN
profile_img p
ON p.user_id = f.friend_one
JOIN
users u
ON u.id = f.friend_one
WHERE f.friend_two = ? AND f.status = ? AND
p.id = (select max(p2.id) from profile_img p2 where p2.user_id = p.user_id)
我試過,coalesce(p.img, 'profile_images/default.jpg') as img
嘗試獲得結果,但沒有幫助。
在另一個查詢:
(case when p.img <> '' then p.img
else 'profile_images/default.jpg'
end) as img
我只是不知道如何得到它在這種情況下工作,它不適合這項工作。
謝謝。這個伎倆。你能告訴我爲什麼infull能夠工作嗎?什麼是推理? – Paul
ifnull與coalesce一樣,在測試的字段爲空時返回不同的值。在這種情況下,對於沒有圖像的用戶,字段p.image_url爲null,因此它返回'default.png'。在功能上它相當於:當p.image_url爲空然後是'default.png'的情況。else p.image_url以profile_pic結束 – serverSentinel