Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql每周都会变得不同_Mysql_Sql - Fatal编程技术网

Mysql sql每周都会变得不同

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

我是一个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_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