mysql - MySQL中三张表的连接

标签 mysql sql

我有 2 个表(照片、photos_details)通过 LEFT JOIN 连接,我想加入第三个表(收藏夹)以查看照片是否收藏。 这是当前的 SQL 查询:

SELECT photos_details.title, photos_details.description, photos.url
FROM photos
LEFT JOIN photos_details ON photos.photo_id = photos_details.photo_id

收藏夹表基本上包含 2 列 (PRIMARY) id 和 photo_id

你知道我该怎么做吗?

最佳答案

LEFT JOIN 针对收藏夹表,并使用 CASE 确定 favorites.photo_id 是否为 null,将其转换为 bool 值 TRUEFALSE 如果照片有收藏。

SELECT
   photos_details.title,
   photos_details.description, 
   photos.url,
   CASE WHEN favorites.photo_id IS NOT NULL THEN TRUE ELSE FALSE END as is_favorited
FROM photos
LEFT JOIN photos_details ON photos.photo_id = photos_details.photo_id
LEFT JOIN favorites ON photos.photo_id = favorites.photo_id

要仅获取收藏的照片,请添加

WHERE favorites.photo_id IS NOT NULL

关于mysql - MySQL中三张表的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129023/

相关文章:

mysql - 巨大的 MySQL 随机字母数字字符串

mysql - 执行 SQL JOIN 需要很长时间

php - 如何从 MySQL 数据库中提取某个项目的类别和标签?

sql - 从每个类别中至少选择一个但不超过一个,并且没有与另一列重复

sql - 使用 google bigquery 构建直方图

用于网络测试的 SQL Server

php - 从 TIMESTAMP 字段返回结果

php - MySQL 选择多行/组多/顺序

php - 如果id在序列中,MySql获取行

php - 使用 mysqli_stmt_bind_param 时无输出