我知道这个问题根本不会对我提出的问题有任何意义,但我的意思是.....为了更清楚,我将在例子中说明我的问题:
我有一个userpost
表,其中包含来自不同用户的帖子。
userpost 表格:
+---------+--------+--------------+
| postId | userId | postMessage |
+---------+--------+--------------+
| 1 | 3 | someText |
| 2 | 5 | someText |
| 3 | 2 | sometext |
| 5 | 6 | someText |
+---------+--------+--------------+
(!记得 userId
被引用 users
表格
我有一个名为favorites
的表,其中postId
从userpost
表引用:
收藏表:
+---------+--------+
| postId | userId |
+---------+--------+
| 1 | 5 |
| 3 | 2 |
+---------+--------+
我想要的是从userpost
获取所有数据并检查某个用户信息是否已被(WHERE userId = 5
)收藏,让我们说
我尝试使用此查询,但这不是我想要的!
SELECT *,
(SELECT EXISTS( SELECT * FROM `favorites` INNER JOIN `userpost` on
favourites.postId = userpost.postId WHERE favorites.postId = 1
AND favorites.userId = 5)) AS isFavourited FROM userpost;
这是以下查询的结果:
+---------+--------+-------------+--------------+
| postId | userId | postMessage | isFavourited |
+---------+--------+-------------+--------------+
| 1 | 3 | someText | 1 |
| 2 | 5 | someText | 1 |
| 3 | 2 | someText | 1 |
| 5 | 3 | someText | 1 |
+---------+--------+-------------+--------------+
我知道我在查询中犯了错误:
(WHERE favorites.postId = 1 AND favorites.userId = 5)
确实返回true。
我将举例说明我想要的内容:
让我们说(userId = 5)
想抓住所有userpost
,我们必须得到以下结果:
+---------+--------+-------------+--------------+
| postId | userId | postMessage | isFavourited |
+---------+--------+-------------+--------------+
| 1 | 3 | someText | 1 |
| 2 | 5 | someText | 0 |
| 3 | 2 | someText | 0 |
| 5 | 3 | someText | 0 |
+---------+--------+-------------+--------------+
答案 0 :(得分:2)
如果我理解你的要求,我认为你可以做这样的事情:
select up.*, case when f.postId is null then "0" else "1" end as isFavourited
from userpost up
left join favourites f on f.postId = up.postId and f.userId = up.userId
答案 1 :(得分:2)
尝试:
ng-change=actualizarDias()
您的查询检查是否存在用户5收藏夹发布1的行;而不是用户5最喜欢在回报的那一行中选择的帖子。