【发布时间】:2021-05-18 04:33:52
【问题描述】:
我在mysql数据库中有这两个表,可以这样查询,如果在like_tbl中没有为列islike找到数据,自动创建一个值为false的临时列。
like_tbl 中好像没有 post_id = 3 的数据,所以结果应该是我下面提到的这样。
post_tbl
| post_id | uid | fname |
|---|---|---|
| 1 | 1 | abc |
| 2 | 1 | abc |
| 3 | 1 | abc |
like_tbl
| likeid | uid | postid | islike |
|---|---|---|---|
| 1 | 2 | 1 | true |
| 2 | 3 | 2 | true |
这是我正在寻找的结果:
| post_id | uid | fname | islike |
|---|---|---|---|
| 1 | 2 | abc | false |
| 2 | 2 | abc | true |
| 3 | 2 | abc | false |
总结我正在尝试进行查询,该查询将返回所有 post_id 并检查like_tbl 特定用户是否喜欢该帖子。如果 like_tbl 中的 uid 的特定 post_id 的数据存在,它将返回 islike 列值 true 否则如果没有找到特定 uid 的 post_id 的数据,它将返回 false。
我试过这个但没有帮助,
select n.* , e.isLike
from post_tbl n
join like_tbl on e.post_id = n.post_id
where n.uid = '2'
order by post_id desc
mysql 数据库新手,如有任何帮助,将不胜感激
【问题讨论】:
-
LEFT JOIN和COALESCE(islike, 'false')。 -
我已经尝试过了,但它没有重新调整 post_tbl 中的所有数据,它只返回 like_tbl 中的数据
-
它不会重新调整 post_tbl 中的所有数据,它只返回 like_tbl 中的数据 如上所述将 JOIN 替换为 LEFT JOIN。
-
编辑样本数据,将
1更改为11、111等等 - 即去除多余值的干扰。与'abc'相同。 -
但我需要来自 post_tbl 的所有数据,如果特定用户的数据不存在,我想显示 false,现在它工作良好但只有一件事我想要所有数据来自 post_tbl。正如我上面在结果中提到的,我想要表格
标签: mysql database join subquery