【问题标题】:Remove duplicates of ONE table in a multiple JOIN result in My SQL在 My SQL 中删除多个 JOIN 结果中 ONE 表的重复项
【发布时间】:2016-01-05 03:51:49
【问题描述】:

我正在尝试显示一些合并 4 个表的信息。我的表是 device、device_model、sub_product_area 和 borrow_device。 我遇到的问题是,当我使用 LEFT JOIN 将表链接到设备表时,借用设备表中的 transaction_ID 有一些重复项。所以我想在 transaction_Mode 上 ORDER BY ONLY 为 LEFT JOIN 并且只在这种情况下采用“红色”相关的 transaction_ID。我试过 SELECT DISTINCT 但它没有用。类似的问题答案均无效。

这是我的查询 ->

SELECT * 
FROM device b 
LEFT OUTER JOIN device_model a ON (b.`model_ID`=a.`model_ID`) 
LEFT JOIN sub_product_area c ON (b.`sub_Product_Area_ID` = c.`sub_Product_Area_ID`) 
LEFT JOIN borrow_device d ON (d.`device_ID` = b.`device_ID` and CURDATE() between from_Date and to_Date) 
ORDER BY d.transaction_Mode DESC

My table structures are as below -:

提前致谢!

【问题讨论】:

  • 这是 MySQL 还是 SQL Server?请张贴您的表格结构。
  • 这是 MySQL。我的表结构如下 - 设备表

标签: mysql join duplicates


【解决方案1】:

在末尾添加“GROUP BY”解决了我的问题。谢谢大家!

【讨论】:

    【解决方案2】:

    device 表和 sub_product_area 表有 2 个相关字段,分别是 sub_product_area_idproduct_area_id。在您的 SQl 语句中尝试添加“and b.product_Area_ID = c.product_Area_ID”,因此您的语法如下所示:

    SELECT * 
    FROM device b 
    LEFT OUTER JOIN device_model a ON (b.`model_ID`=a.`model_ID`) 
    LEFT JOIN sub_product_area c ON (b.`sub_Product_Area_ID` = c.`sub_Product_Area_ID` and b.`product_Area_ID` = c.`product_Area_ID`) 
    LEFT JOIN borrow_device d ON (d.`device_ID` = b.`device_ID` and CURDATE() between from_Date and to_Date) 
    ORDER BY d.transaction_Mode DESC
    

    【讨论】:

    • 感谢您的回复,但我的问题仍然存在,即当结果集提供 2 条记录为 'red' & 'orange' transaction_Mode 但具有相同的 transaction_ID,我只需要显示设备'red' transaction_Mode.(这是设备表 JOIN 借用设备表时的结果)无论如何我可以过滤到那个要求吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2020-02-27
    • 2015-02-06
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    相关资源
    最近更新 更多