gpt4 book ai didi

mysql - 在同一个查询中获得用户群平均投票和单个用户的投票?

转载 作者:行者123 更新时间:2023-11-29 01:01:27 24 4
gpt4 key购买 nike

这里是:

T1
[id] [desc]
1 lovely
2 ugly
3 slender

T2
[id] [userid] [vote]
1 1 3
1 2 5
1 3 2
2 1 1
2 2 4
2 3 4

在一次查询中(如果可能)我想返回:

T1.id, T1.desc, AVG(T2.vote), T2.vote (for user viewing the page)

我可以获得前 3 个项目:

SELECT T1.id, T1.desc, AVG(T2.vote)
FROM T1
LEFT JOIN T2 ON T1.id=T2.id
GROUP BY T1.id

我可以通过以下方式获得第一项、第二项和第四项:

SELECT T1.id, T1.desc, T2.vote
FROM T1
LEFT JOIN T2 ON T1.id=T2.id
WHERE T2.userid='1'
GROUP BY T1.id

但我不知道如何在一个查询中获取所有四个项目。我尝试插入一个选择作为第四项:

SELECT T1.id
, T1.desc
, AVG(T2.vote)
, (SELECT T2.vote
FROM T2
WHERE T2.userid='1') AS userVote
etc
etc

但我得到一个错误,select 返回多行...

帮忙吗?

我想在一个查询而不是两个查询中执行此操作的原因是我希望能够在 MySQL 中对数据进行排序,而不是将数据拆分成多个数组。

最佳答案

使您的子查询与整个查询相关联。我认为这就是您想要的:

SELECT t1.id, t1.descr, AVG(t2.vote),
(SELECT t2.vote FROM t2 WHERE t2.userid = 1 AND t1.id = t2.id) AS uservote
FROM t1
LEFT JOIN t2 USING (id)
GROUP BY t1.id

我得到的结果是:

+------+---------+--------------+----------+
| id | descr | AVG(t2.vote) | uservote |
+------+---------+--------------+----------+
| 1 | lovely | 3.3333 | 3 |
| 2 | ugly | 3.0000 | 1 |
| 3 | slender | NULL | NULL |
+------+---------+--------------+----------+
3 rows in set (0.00 sec)

关于mysql - 在同一个查询中获得用户群平均投票和单个用户的投票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2863011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com