SQL:如何从单独的表动态计算值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL:如何从单独的表动态计算值?相关的知识,希望对你有一定的参考价值。
我正在构建一个黑客新闻风格的页面,我正在尝试从数据库中获取要显示在页面上的帖子列表,包括关于当前用户是否已对特定帖子进行投票的数据。
我正在尝试查询posts
列表(来自posts
表),我想在votes
表(post.id on votes.postId)上执行连接,以查看某个帖子是否已被当前的选票投票用户,并为每个回来的帖子返回类似userHasVoted
的内容,即时计算。
我一直试图让这种情况发生,但似乎只返回用户投票的帖子。
如何查询数据库以显示每个帖子以及它是否由给定用户投票?
这是我的投票表:
+----+--------+--------+-------+
| id | userId | postId | value |
+----+--------+--------+-------+
| 1 | 1 | 1 | 1 |
| 2 | 2 | 1 | 1 |
| 3 | 4 | 3 | 1 |
| 4 | 1 | 5 | 0 |
| 5 | 3 | 2 | 1 |
| 6 | 4 | 8 | 1 |
| 7 | 1 | 8 | 1 |
| 8 | 4 | 9 | 1 |
| 9 | 1 | 9 | 1 |
+----+--------+--------+-------+
这是我的帖子表(省略标题,内容,链接等):
+----+---------------+--------+
| id | publishStatus |authorId|
+----+---------------+--------+
| 1 | PUBLIC | 1 |
| 2 | PUBLIC | 2 |
| 3 | PUBLIC | 3 |
| 4 | PUBLIC | 4 |
| 5 | PUBLIC | 2 |
| 6 | PUBLIC | 1 |
| 7 | PUBLIC | 1 |
| 8 | PUBLIC | 1 |
| 9 | PUBLIC | 1 |
+----+---------------+--------+
答案
以下是一个例子,你可以得到Yes
或No
而不是1
或0
SELECT DISTINCT p.*, CASE
WHEN v.value = 0
THEN 'No'
ELSE 'Yes'
END userHasVoted
FROM posts p
INNER JOIN votes v ON p.id = v.postid
另一答案
选择a.name作为post_name,sum(vote.value)count_of_votes来自a.id = vote.postid group on name a join a vote
-----------------------------查找所有用户对特定帖子的总投票数
以上是关于SQL:如何从单独的表动态计算值?的主要内容,如果未能解决你的问题,请参考以下文章