Mysql sql每周都会变得不同
我是一个sql程序员新手,所以我需要一些帮助来获取查询提取 我需要每周在一张桌子上播放独特的歌曲 比如说,在某个星期里播放了8首不同的歌曲,但这8首歌每次都播放了很多次,我只想让这8首歌出现 我需要加入2个选项卡,一个统计表和一个播放列表表来完成Mysql sql每周都会变得不同,mysql,sql,Mysql,Sql,我是一个sql程序员新手,所以我需要一些帮助来获取查询提取 我需要每周在一张桌子上播放独特的歌曲 比如说,在某个星期里播放了8首不同的歌曲,但这8首歌每次都播放了很多次,我只想让这8首歌出现 我需要加入2个选项卡,一个统计表和一个播放列表表来完成 SELECT playlist.p_title AS title, stats.s_week AS week, playlist.p_artist AS artist, p_id FROM stats, playlist WHERE stats.s_p
SELECT playlist.p_title AS title, stats.s_week AS week, playlist.p_artist AS artist, p_id
FROM stats, playlist
WHERE stats.s_pid = playlist.p_id
AND s_uid =31
ORDER BY s_week DESC
LIMIT 0 , 30
这是我最初的查询,它给了我所有几周内播放过的歌曲,即使它们每周都播放了很多次,这是我不想要的
有谁能帮我把每周的歌曲区分开来
提前感谢-Rasmus只需使用DISTINCT子句:
SELECT playlist.p_title AS title, stats.s_week AS week, playlist.p_artist AS artist, p_id
FROM stats, playlist
WHERE stats.s_pid = playlist.p_id
AND s_uid =31
group by playlist.p_title, stats.s_week,playlist.p_artist
ORDER BY s_week DESC
LIMIT 0 , 30
SELECT DISTINCT
playlist.p_title AS title,
stats.s_week AS week,
playlist.p_artist AS artist, p_id
FROM stats inner join playlist on stats.s_pid = playlist.p_pid
WHERE s_uid =31
ORDER BY s_week DESC
LIMIT 0 , 30
此外,最好使用表1.id=table2.id上的
table1内部联接表2,而不是使用WHERE子句将两个表联接在一起。如果您每周都想这样做,
最好查看分组依据
此外,我还建议寻找有关使用JOIN
语法的教程(这是自1992年以来出现的,通常被认为是使用的标准。使用,
在各种RDBMS中也经常被弃用。)
在某些字段中没有包含表名的地方,我也将它们添加回了
最好明确说明字段的来源。对于<代码>分组方式
,以及其他用途,通常需要使用它
SELECT
stats.s_week AS week,
stats.p_id AS pid,
playlist.p_title AS title,
playlist.p_artist AS artist,
COUNT(*) AS plays /* This shows how many times a track was played */
FROM
stats
INNER JOIN
playlist
ON stats.s_pid = playlist.p_id
WHERE
s_uid =31
GROUP BY
stats.s_week,
stats.p_id,
playlist.p_title,
playlist.p_artist
ORDER BY
stats.s_week DESC
LIMIT
0 , 30