Mysql

MySQL 選擇所有記錄,除非使用者必須出現在收藏夾中

  • May 21, 2018

我很難找到以下問題的最佳解決方案;

**描述:**我想從項目表中選擇所有記錄,除非它僅用於收藏夾,在這種情況下,使用者必須出現在所有者的收藏夾中。

這些表看起來像這樣;

項目表(包含所有項目的表)

+----+----------+---------------+
| 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

在性能方面有更好的解決方案嗎?

引用自:https://dba.stackexchange.com/questions/207047