Mysql Sql多次返回行
我有以下sql:Mysql Sql多次返回行,mysql,sql,database,Mysql,Sql,Database,我有以下sql: select `items`.`id`, `items`.`item_url`, `items`.`title`, `items`.`description`, `items`.`item_image_name`, `items`.`downloads`, `items`.`likes`, `items`.`date` from `items` left join `categories` as `c` on `c`.`id` = `items`.`category_id`
select `items`.`id`, `items`.`item_url`, `items`.`title`, `items`.`description`, `items`.`item_image_name`, `items`.`downloads`, `items`.`likes`, `items`.`date`
from `items` left join `categories` as `c` on `c`.`id` = `items`.`category_id`
left join `item_tags` as `it` on `it`.`item_id` = `items`.`id`
inner join `tags` as `t` on `t`.`id` = `it`.`tag_id`
where (`items`.`title` LIKE '%psd%' or `c`.`name` LIKE '%psd%' or `t`.`name` LIKE '%psd%')
order by `items`.`date` desc limit 12
但由于某些原因,某些行在items表中重复多次。是否有一种方法可以在不重复相同项目id的情况下从项目中获取结果。如果要避免重复数据,可以尝试使用DISTINCT。大概是这样的:
select DISTINCT `items`.`id`, `items`.`item_url`, `items`.`title`, `items`.`description`, `items`.`item_image_name`, `items`.`downloads`, `items`.`likes`, `items`.`date`
from `items` left join `categories` as `c` on `c`.`id` = `items`.`category_id`
left join `item_tags` as `it` on `it`.`item_id` = `items`.`id`
inner join `tags` as `t` on `t`.`id` = `it`.`tag_id`
where (`items`.`title` LIKE '%psd%' or `c`.`name` LIKE '%psd%' or `t`.`name` LIKE '%psd%')
order by `items`.`date` desc limit 12
或者您也可以使用分组方式
select `items`.`id`, `items`.`item_url`, `items`.`title`, `items`.`description`, `items`.`item_image_name`, `items`.`downloads`, `items`.`likes`, `items`.`date`
from `items` left join `categories` as `c` on `c`.`id` = `items`.`category_id`
left join `item_tags` as `it` on `it`.`item_id` = `items`.`id`
inner join `tags` as `t` on `t`.`id` = `it`.`tag_id`
where (`items`.`title` LIKE '%psd%' or `c`.`name` LIKE '%psd%' or `t`.`name` LIKE '%psd%')
group by `items`.`id`, `items`.`item_url`, `items`.`title`, `items`.`description`, `items`.`item_image_name`, `items`.`downloads`, `items`.`likes`, `items`.`date`
order by `items`.`date` desc limit 12
您需要在查询中使用DISTINCT关键字:
您需要一个“按项目分组.id”这个问题的格式需要更好。编辑:yayEither使用DISTINCT或while循环(或其他循环)过滤掉重复项,而不查看表或表的一部分,很难知道返回重复结果的原因。你能和我们分享一下吗?或者设置SQLFIDLE?如果您不知道记录重复的原因,我不主张使用distinct。它可能表示数据库或查询中存在其他错误。首先找出“重复”记录的来源,然后寻找解决方案。向我们展示表结构、示例数据等以获得答案。我假设您使用的是MySql,然后删除Sql Server标记。这是一条注释,不是吗?非常感谢,distinct方法完成了这项工作。