Mysql
MySQL 選擇所有記錄,除非使用者必須出現在收藏夾中
我很難找到以下問題的最佳解決方案;
**描述:**我想從項目表中選擇所有記錄,除非它僅用於收藏夾,在這種情況下,使用者必須出現在所有者的收藏夾中。
這些表看起來像這樣;
項目表(包含所有項目的表)
+----+----------+---------------+ | id | owner_id | favorite_only | +----+----------+---------------+ | 1 | 1 | 0 | | 2 | 2 | 1 | | 3 | 2 | 1 | +----+----------+---------------+
收藏夾表(保存所有者最喜歡的使用者的表)
+----+----------+---------+ | id | owner_id | user_id | +----+----------+---------+ | 1 | 2 | 1 | +----+----------+---------+
我希望以上足夠,如果沒有,請告訴我。
我對以下條件的問題做了一個簡單的解決方案;
CASE WHEN items.favorite_only = 1 THEN (SELECT favorites.user_id FROM favorites WHERE favorites.owner_id = items.owner_id AND favorites.user_id = 1 LIMIT 1) WHEN items.favorite_only = 0 THEN 1 END
在性能方面有更好的解決方案嗎?