今天我開始嘗試在存儲過程中使用If Else語句。MySQL:存儲過程無法顯示正確的結果
這是我的查詢:
BEGIN
SELECT p.id,
p.content,
p.title,
t.id as type_id,
t.name as type_name,
c.id as category_id,
c.name as category_name,
s.id as status_id,
s.name as status_name,
u.id as user_id,
u.name as author,
u.username as username
FROM posts p
JOIN post_types t on t.id = p.type_id
JOIN categories c ON c.id = p.category_id
JOIN statuses s ON s.id = p.status_id
JOIN users u ON u.id = p.user_id
WHERE p.deleted_at IS NULL
AND p.user_id = user
AND p.type_id IN (IF(type='all', (SELECT id FROM post_types),(SELECT id FROM post_types WHERE name = type)))
AND p.created_at BETWEEN start_date and end_date
ORDER BY p.id DESC
LIMIT per_page
OFFSET skip;
END
在查詢我試圖選擇並加入一些表
,但問題是在哪裏聲明AND p.type_id IN (IF(type='all', (SELECT id FROM post_types),(SELECT id FROM post_types WHERE name = type)))
當我通過類型參數爲「所有」,存儲過程返回零值,但是當我將類型參數作爲'content'或'photo'傳遞時,它返回正確的值。 看來IN聲明無法讀取我的SELECT id FROM post_types
查詢
任何人都可以糾正或給我參考如何做到這一點?
我寫錯了什麼? 感謝您的任何建議!
嘗試使用'case when'而不是'If' –