Mysql 左连接和复制结果
我有一个sql语句,如下所示:Mysql 左连接和复制结果,mysql,sql,Mysql,Sql,我有一个sql语句,如下所示: SELECT s.sp_id,s.synopsis,s.logline,s.user_id,s.bin_status,s.sp_order,s.sp_down_count,s.sp_name, `users`.firstname as `firstname`,`users`.lastname as `lastname`,s.status, `users`.email as `email`,`users`.p
SELECT s.sp_id,s.synopsis,s.logline,s.user_id,s.bin_status,s.sp_order,s.sp_down_count,s.sp_name,
`users`.firstname as `firstname`,`users`.lastname as `lastname`,s.status,
`users`.email as `email`,`users`.phone as `phone`,`users`.address1 as `address1`,
`users`.address2 as `address2`,`users`.`r_group`, view_coverages.grade,coverages.comments
FROM s
LEFT JOIN `users` ON `users`.user_id=s.user_id
LEFT JOIN view_coverages ON view_coverages.sp_id=s.sp_id
LEFT JOIN `coverages` ON `coverages`.sp_id=s.sp_id
WHERE $email_filter lower(s.synopsis) like '%$search_word_fix%'
OR lower(s.sp_name) like '%$search_word_fix%'
OR lower(s.logline) like '%$search_word_fix%'
OR lower(coverages.comments) like '% $search_word_fix %'
ORDER BY view_coverages.grade DESC
当我显示结果时,我会得到很多重复的结果。
我想在s.sp_名称不重复的地方显示搜索结果。您有两个选项:
Select
更改为selectdistinct
,仅选择唯一的、不重复的结果按s.sp_name分组
,但您需要对正在选择的所有其他字段执行聚合函数选择DISTINCT
)。如果在重复的行中有一个非唯一字段,则需要按分组除唯一字段外的每个字段;在剩余的唯一字段上使用聚合函数(即,SUM
,AVG
等)。
SELECT s.sp_id,s.synopsis,s.logline,s.user_id,s.bin_status,s.sp_order,s.sp_down_count,s.sp_name,
`users`.firstname as `firstname`,`users`.lastname as `lastname`,s.status,
`users`.email as `email`,`users`.phone as `phone`,`users`.address1 as `address1`,
`users`.address2 as `address2`,`users`.`r_group`, view_coverages.grade,coverages.comments
FROM s
LEFT JOIN `users` ON `users`.user_id=s.user_id
LEFT JOIN view_coverages ON view_coverages.sp_id=s.sp_id
LEFT JOIN `coverages` ON `coverages`.sp_id=s.sp_id
WHERE $email_filter lower(s.synopsis) like '%$search_word_fix%'
OR lower(s.sp_name) like '%$search_word_fix%'
OR lower(s.logline) like '%$search_word_fix%'
OR lower(coverages.comments) like '% $search_word_fix %'
ADD ---> group by s.sp_name
ORDER BY view_coverages.grade DESC
结果中会出现重复,因为某些地方的数据没有唯一的联接。为了找到(这样就可以更正),我们需要一些样本数据和结果,可能还有您想要实现的功能…我使用了select DISTINCT,它仍然显示重复项您的意思是没有更改或返回零行?如果没有任何更改,那么在重复行中哪些字段没有重复?没有,它仍然显示重复项。选择不同的s.sp_id、s.Symposis、s.logline、s.user_id、s.bin_状态、s.sp_顺序、s.sp_down_计数、s.sp_名称等…好的,那么在有两次“John Doe”的行中,这两行之间的特定字段不同?电话号码不同吗?情况如何?等等。那么,听起来你有重复的数据。否则,如果这些联接表上存在一对多关系,则可能会对任何父行运行重复数据。