查询分组依据和排序依据
Query group by and order by
来自这个查询:
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
我有来自 table
的数据
idutente idvideo likeY unlikeY sott
------------------------------------------------
1 70 2 5 -3
2 81 6 10 -4
1 52 200 198 2
1 54 30 2 28
2 67 20 5 15
3 22 12 0 12
我需要这个结果,可能吗?
idutente likeY unlikeY sott
------------------------------------------------
1 232 205 27
2 26 15 11
3 12 0 12
我试试这个查询
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
vl.likeY as likeY,
vl.unlikeY as unlikeY,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
您似乎想使用 sql sum() 函数
SELECT
v.idutente AS idutente,
sum(vl.likeY) as likeY,
sum(vl.unlikeY) as unlikeY,
sum(vl.likeY)-sum(vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
SELECT idutente,
SUM(likeY) likeY,
SUM(unlikeY) unlikeY,
SUM(sott) sott
FROM mytable
GROUP BY idutente
ORDER BY sott DESC
在 SQL Fiddle 试试。
请对 select 列使用聚合 SUM() 运算。查询可以修改为:
SELECT v.idutente AS idutente,
vl.idvideo AS idvideo,
SUM(vl.likeY) AS likeY,
SUM(vl.unlikeY) AS unlikeY,
SUM(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
将您的第一个查询用作子查询并进行分组。
查询
SELECT t.idutente, SUM(t.likeY) as likeY, SUM(t.unlikeY) as unlikeY from(
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
vl.likeY,
vl.unlikeY,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
) t
GROUP BY t.idutente
ORDER t.sott desc;
来自这个查询:
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
我有来自 table
的数据idutente idvideo likeY unlikeY sott
------------------------------------------------
1 70 2 5 -3
2 81 6 10 -4
1 52 200 198 2
1 54 30 2 28
2 67 20 5 15
3 22 12 0 12
我需要这个结果,可能吗?
idutente likeY unlikeY sott
------------------------------------------------
1 232 205 27
2 26 15 11
3 12 0 12
我试试这个查询
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
vl.likeY as likeY,
vl.unlikeY as unlikeY,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
您似乎想使用 sql sum() 函数
SELECT
v.idutente AS idutente,
sum(vl.likeY) as likeY,
sum(vl.unlikeY) as unlikeY,
sum(vl.likeY)-sum(vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
SELECT idutente,
SUM(likeY) likeY,
SUM(unlikeY) unlikeY,
SUM(sott) sott
FROM mytable
GROUP BY idutente
ORDER BY sott DESC
在 SQL Fiddle 试试。
请对 select 列使用聚合 SUM() 运算。查询可以修改为:
SELECT v.idutente AS idutente,
vl.idvideo AS idvideo,
SUM(vl.likeY) AS likeY,
SUM(vl.unlikeY) AS unlikeY,
SUM(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v ON vl.idvideo = v.ID
WHERE status = '1'
GROUP BY v.idutente
ORDER BY sott DESC
将您的第一个查询用作子查询并进行分组。
查询
SELECT t.idutente, SUM(t.likeY) as likeY, SUM(t.unlikeY) as unlikeY from(
SELECT
v.idutente AS idutente,
vl.idvideo AS idvideo,
vl.likeY,
vl.unlikeY,
(vl.likeY-vl.unlikeY) AS sott
FROM video_likeunlike AS vl
LEFT OUTER JOIN video AS v
ON vl.idvideo = v.ID
WHERE status = '1'
) t
GROUP BY t.idutente
ORDER t.sott desc;