Mysql联接 - 结果重复如何解决它

时间:2017-04-19 10:55:44

标签: mysql database

我是MySQL新手,这是我的第一个问题,如果有任何错误请原谅我。

我有 6个表我想使用 6个表报告。我的一个报告访问所有6个表并按照我们编写的查询打印数据。现在问题是我写了我的查询但这将返回大量重复数据。如何避免指导我请。

    SELECT 
         @rownum := @rownum + 1 AS RowNumber, 
         a.vnumber,a.vname, 
         b.eid,b.name,b.mobile, 

         c.vid,c.emp_id,c.pick_place,c.start_time,c.drop_place,c.stop_time,
         c.pickupkm,c.drops,c.type_of_trip,c.travelkm,c.tamt,c.dates,
         d.vid,d.emp_id,d.expcal,d.exp1,d.exp2,d.exp3,
         d.exp4,d.exp5,d.expamt,d.expdesc,d.dates, 
         e.emp_id,e.vid,e.opeing_km,e.opeing_cash,e.closing_km,

         e.closing_cash,e.opeing_date,e.opeing_time,e.closing_date,
         e.closing_time, f.vid,f.emp_id,
         f.totkm,f.totamt,f.expenses,f.handover_amt,
         f.balance_amt,f.handover_to,f.plstatus,f.entry_date 

  from 
         add_vehicle a 

         LEFT JOIN third_table c ON a.vnumber=c.vid 
         LEFT JOIN add_employees b ON b.eid=c.emp_id 
         LEFT JOIN fourth_table d ON a.vnumber=d.vid 
         LEFT JOIN shift e ON b.eid=e.emp_id 
         LEFT JOIN five_table f ON a.vnumber=f.vid, 

(SELECT @rownum := 0) r 
        WHERE 
              c.type_of_trip IS NOT NULL AND 
              c.dates BETWEEN '2017-04-01' AND '2017-04-19' AND 
              d.dates BETWEEN '2017-04-01' AND '2017-04-19' AND 
              f.entry_date BETWEEN '2017-04-01' AND '2017-04-19' AND 
              c.vid='STAT01' AND f.vid='STAT01' AND c.emp_id='1' AND 
              f.emp_id='1' AND e.emp_id='1' 

ORDER BY c.dates,f.entry_date DESC
  

抱歉SQL小提琴无法正常工作。

这是我的表格和样本数据。

My sample data

2 个答案:

答案 0 :(得分:0)

也许您可以使用您想要独特的列“分组依据”,或使用“distinct”

答案 1 :(得分:0)

您可以使用GROUP BY功能来避免重复数据。只需将group by用于那些您想要独特的数据。示例如下

 GROUP BY eid

最后添加此查询,以避免同一员工。

您也可以使用INNER JOIN