mysql - MariaDB - 如何使用 IF/ELSE 从另一个表中再添加(加入)一列
问题描述
我有两张桌子叫做ARTICLE
and SAVE
。
ARTICLE
表有整个文章数据。并且SAVE
table 之间有email
和seq
的关系ARTICLE
。
ARTICLE
seq email title content
1 fm@x.y ya hah
2 ch@x.y ho hihi
3 ch@x.y yo hoho
SAVE
seq email article_seq
3 ch@x.y 1
因此,如果您使用您的帐户(a@x.y
)保存第 3 篇文章,SAVE
表格将更改为...
SAVE
seq email article_seq
3 ch@x.y 1
4 a@x.y 3
我想SELECT
在 ARTICLE 调用中再创建一列(的结果)is_saved
。我期望这个结果SELECT
:
当我以ch@x.y
RESULT
seq email title content is_saved
1 fm@x.y ya hah 1
2 ch@x.y ho hihi 0
3 ch@x.y yo hoho 0
当我以fm@x.y
RESULT
seq email title content is_saved
1 fm@x.y ya hah 0
2 ch@x.y ho hihi 0
3 ch@x.y yo hoho 0
所以,我需要JOIN
基于这两个表ARTICLE
并且我可能需要IF/ELSE
条件。我怎样才能做到这一点?
解决方案
首先,您选择所有文章(由用户),然后在文章 seq id 上进行左连接。您需要一个左连接来区分已保存(行存在)和未保存(行不存在)。
SELECT
*,
IF(s.is_saved IS NULL, 1, 0) as 'is_saved'
FROM 'ARTICLE' a
LEFT JOIN 'SAVE' s
ON a.seq = s.article_seq
WHERE a.email = :email
看起来您email
在两个表中也存在冗余。
推荐阅读
- angular - 如何以角度添加点分隔路线?
- sql-server - 执行 SQL Server 2019 服务包时尝试执行未经授权的操作
- python - 如何使用 numpy 或 scipy 生成具有多个峰值的随机数据?
- javascript - 如何使用键将对象数组推入数组
- javascript - 可以访问映射数组中对象的属性(Next.js)
- python - 如何修复TypeError:只能将整数标量数组转换为标量索引
- flutter - 在 Flutter 中编写特定于平台的 UI 的有效方法
- simulation - 是否可以在两台不同的物理机上连接 Mininet 和 OpenDayLight 控制器?
- java - 如何用 Selenium 中的印地语等区域语言断言文本
- javascript - 从对象中提取所需的键和值并将其分配给 Javascript 中的新对象