mysql我得到了重复数据

时间:2015-01-07 11:00:15

标签: php mysql

我有两张桌子,一张是电影,另一张是film_votes,共23张。

请参阅下面的胶片表结构截图 enter image description here

下面是film_votes表结构

enter image description here

我想显示所有user_id = 8163的记录,并在电影表格中按年份desc排序' ano'专栏被视为年份。

我使用每页限制12条记录表示分页存在。但是当我在第二页中运行一些记录时是重复的

下面的

是我的代码

$memID = 8163;
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT 0,12



SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT 12,12

我不知道为什么会发生这种情况以及为什么重复记录会出现在第二页

请建议我如何解决这个问题,以及我做了什么错误。

提前致谢

3 个答案:

答案 0 :(得分:3)

对于第二页,您需要使用:

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b
    WHERE a.peli_id=b.movie_id AND b.user_id=$memID
    ORDER BY a.ano DESC
    LIMIT 12, 12

LIMIT是关键所在。语法是:

LIMIT [Start], [Length]

答案 1 :(得分:0)

您是否尝试过SQL LEFT JOIN?

类似的东西:

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating
FROM film a
LEFT JOIN film_votes b
ON a.peli_id=b.movie_id 
WHERE b.user_id=$memID 
ORDER BY a.ano DESC LIMIT 0,12;

并更改

DESC LIMIT 12,12等24,12,当你进入下一页时。

更多信息:SQL JOIN

答案 2 :(得分:0)

您似乎正在为所有页面执行相同的代码。所以你需要做一点动态。就像这个

$page=1;//receive the page number.lets assume 1 for first page 2 for 2nd page
//$page=$_GET['page'];you can receive it this way 

$start=($page-1)*12;//calculate starting index

//现在就像这样进行查询

SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID  ORDER BY a.ano DESC LIMIT $start,12