Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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_Database - Fatal编程技术网

Mysql 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`

我有以下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` 
 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方法完成了这项工作。