检查从另一个表引用的表中的某一行?

时间:2016-02-08 15:28:08

标签: php mysql sql-server

我知道这个问题根本不会对我提出的问题有任何意义,但我的意思是.....为了更清楚,我将在例子中说明我的问题:

我有一个userpost表,其中包含来自不同用户的帖子。

userpost 表格:

 +---------+--------+--------------+
 |  postId | userId | postMessage  |
 +---------+--------+--------------+
 |       1 |      3 | someText     |
 |       2 |      5 | someText     |
 |       3 |      2 | sometext     |
 |       5 |      6 | someText     |
 +---------+--------+--------------+

!记得 userId 被引用 users表格

我有一个名为favorites的表,其中postIduserpost表引用:

收藏表:

+---------+--------+
|  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 | 
+---------+--------+-------------+--------------+

2 个答案:

答案 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最喜欢在回报的那一行中选择的帖子。