加入两页返回重复的结果

时间:2017-03-13 23:54:56

标签: php mysql mysqli

所以,我正在尝试加入2个表来从一个查询中获取结果,但问题是此查询显示重复的帖子,例如帖子和两个用户中只有一个帖子,它会重复两个用户的帖子并将它们复制,就好像它们是

一样
$keywords = $mysqli->escape_string($_GET['search_prototype']);

$result = $mysqli->query("
SELECT posts.id, posts.content, posts.user_id, posts.date, users.name, users.lastname, users.id, users.avatar_location
FROM posts, users WHERE posts.content LIKE '%$keywords%' OR users.name LIKE '%$keywords%' AND posts.user_id = users.id ORDER BY posts.id DESC");

2 个答案:

答案 0 :(得分:0)

使用LEFT JOIN

SELECT posts.id, posts.content, posts.user_id, posts.date, users.name, users.lastname, users.id, users.avatar_location FROM users LEFT JOIN posts ON posts.user_id = users.id WHERE posts.content LIKE '%$keywords%' OR users.name LIKE '%$keywords%' ORDER BY posts.id DESC

答案 1 :(得分:0)

通过添加括号来更改您的查询,以便更好地对OR对进行分组

SELECT posts.id,
       posts.content,
       posts.user_id,
       posts.date, users.name,
       users.lastname,
       users.id, 
       users.avatar_location
FROM posts, users 
WHERE (posts.content LIKE '%$keywords%' OR users.name LIKE '%$keywords%') 
AND posts.user_id = users.id 
ORDER BY posts.id DESC

例如,请检查此SQL fiddle