首页 > 解决方案 > MariaDB - 如何使用 IF/ELSE 从另一个表中再添加(加入)一列

问题描述

我有两张桌子叫做ARTICLEand SAVE

ARTICLE表有整个文章数据。并且SAVEtable 之间有emailseq的关系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条件。我怎样才能做到这一点?

标签: mysqlsqlmariadb

解决方案


首先,您选择所有文章(由用户),然后在文章 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在两个表中也存在冗余。


推荐阅读