簡體   English   中英

使用group by的復雜MySQL查詢

[英]Complex MySQL query using group by

可以說我有兩個桌子

Table1:
product_id, design1, design2
1              A        C
2              B        A

Table2:
product_id, value
1             10
2             10

現在,我想總結所有產品的特定設計的所有價值。

SELECT designA, SUM(value) FROM ( 
 SELECT b.design1 AS designA, SUM(value) AS value FROM table2 AS a LEFT JOIN table1 AS b ON a.product_id = b.product_id GROUP BY b.design1) AS T GROUP BY designA

It gives me this:
designA SUM(value)
  A           10
  B           10

現在的問題是,如果用戶在表1中指定了design2,那么design1的值將自動添加到design2中。 如果不存在design2,那么design1列將是結果的新行:

貶值的結果是這樣的:

designA SUM(value)
  A            20
  B            10
  C            10
select y.designA, sum(value) from 

(select  a.design1 as designA, value from
Table1 as a
inner join Table2 as b
on
a.product_id = b.product_id

union all

select a.design2 as designA, value from
Table1 as a
inner join Table2 as b
on
a.product_id = b.product_id) as y 
group by y.designA

似乎適用於您的測試數據,沒有嘗試過其他配置,但是如果您了解它的作用,則應該可以對其進行調整。

基於design2的比賽中的UNION:

SELECT designA, SUM(value) FROM ( 
 SELECT b.design1 AS designA, SUM(value) AS value FROM table2 AS a LEFT JOIN table1 AS b ON a.product_id = b.product_id GROUP BY b.design1
UNION
 SELECT b.design2 AS designA, SUM(value) AS value FROM table2 AS a LEFT JOIN table1 AS b ON a.product_id = b.product_id GROUP BY b.design2
) AS T GROUP BY designA

暫無
暫無

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

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