簡體   English   中英

MySQL子查詢獲取多個結果

[英]MySQL subquery pulls multiple results

我在不同的'manufacturer'字段中重復記錄。 我正在嘗試按GROUP BY i.stocknumber但這只會刪除一條記錄,而不會收集其他制造商的結果。

一些記錄的制造商字段為NULL ,我嘗試在子查詢中使用GROUP_CONCAT來消除“ manufacturer”的不同結果。

這是我當前的查詢:

SELECT i.id,i.stocknumber,m.manufacturer
FROM inventory i
INNER JOIN makes mk on i.make = mk.id 
INNER JOIN models md on i.model = md.id 
INNER JOIN classes cl on i.class = cl.id 
LEFT JOIN ( 
            SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer' 
            FROM display_manufacturers dm 
            INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id 
           ) m ON i.id = m.inventory_id 
-- GROUP BY i.stocknumber
ORDER BY i.stocknumber

我得到的結果是:

在此處輸入圖片說明

關於通過合並manufacturer字段將重復記錄分組的想法?

注意:我已經在子查詢上嘗試了GROUP_CONCAT

所需結果:

id   | stocknumber | manufacturer
----------------------------------
946  | 011A        | NULL
907  | 1001        | Sports Coach, Coachmen
1032 | 1001x       | Sports Coach

等等....

您在找這個嗎?

SELECT i.id, i.stocknumber, group_concat(distinct m.manufacturer) as manufacturers
. . .
GROUP BY i.stocknumber

編輯:

此版本明確將您的查詢用作子查詢。 不應將所有制造商放在同一行:

select stocknumber, group_concat(distinct manufacturer) as manufacturers
from (SELECT i.id,i.stocknumber,m.manufacturer
      FROM inventory i
      INNER JOIN makes mk on i.make = mk.id 
      INNER JOIN models md on i.model = md.id 
      INNER JOIN classes cl on i.class = cl.id 
      LEFT JOIN ( 
            SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer' 
            FROM display_manufacturers dm 
            INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id 
           ) m ON i.id = m.inventory_id
     ) t
GROUP BY stocknumber ;

如果您要刪除的是NULL字段,則只需添加WHERE條件即可,不包括NULL字段

SELECT i.id,i.stocknumber,m.manufacturer
FROM inventory i
INNER JOIN makes mk on i.make = mk.id 
INNER JOIN models md on i.model = md.id 
INNER JOIN classes cl on i.class = cl.id 
LEFT JOIN ( 
            SELECT idm.id, idm.inventory_id, dm.manufacturer AS 'manufacturer' 
            FROM display_manufacturers dm 
            INNER JOIN inventory_display_manufacturers idm ON dm.id = idm.display_manufacturer_id 
           ) m ON i.id = m.inventory_id 
WHERE m.manufacturer IS NOT NULL
-- GROUP BY i.stocknumber
ORDER BY i.stocknumber

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM