簡體   English   中英

為什么 mysql 中的 UNION ALL 命令不返回任何結果?

[英]why UNION ALL command in mysql doesn't give back any results?

我正在嘗試將兩個查詢合並為一個,但 UNION 對我不起作用。 這是代碼:

SELECT
Customer_A,
Activity,
Customer_P,
Purchase
FROM (
SELECT 
buyer_id as Customer_A,
COUNT(buyer_id) As Activity
FROM 
customer_info_mxs
GROUP BY buyer_id
UNION ALL
SELECT
buyer_id as Customer_P,
SUM(purchase_amount) As Purchase
FROM 
customer_info_mxs
GROUP BY buyer_id
)sub

結果我希望有 4 列,但我得到了 2 列(Customer_A)和(Activity)。

如果查詢應該返回客戶列表、他們的購買次數以及他們花費的總金額,那么您可以使用這樣的單個查詢:

SELECT mxs.buyer_id as Customer,
       COUNT(mxs.purchase_id) As Activity,
       SUM(mxs.purchase_amount) As Purchases
  FROM customer_info_mxs mxs
 GROUP BY mxs.buyer_id;

否則,您的第一個子查詢將始終是buyer_id且值為1

如果您希望看到該號碼,請務必將purchase_id更改為每次購買的唯一id

我認為工會聲明有些混亂。 union 語句返回一個行集,它是所有“聯合”查詢的總和; 由於這些查詢只有 2 列,組合的 output 只有兩列。 列具有不同名稱的事實無關緊要。 output 中的列名是從聯合的第一個查詢中應用的。

一種選擇是做

select buyer_id, count(buyer_id), sum(purchase_amount) from customer_info_mxs group by buyer_id

從您的問題來看,您似乎正在嘗試做一個 pivot,將一些行變成額外的列。 這可以通過......一些困難來完成。

我閱讀了您的評論,“主要目標是創建一個數據集,其中返回 5 列:Customer_A、Activity(前 100 名)、customer_P、Purchase(前 100 名)、活動和購買的內部連接”

請試試這個查詢

SET @row_number = 0, @row_number2 = 0; 
SELECT t1.Customer_A,t1.Activity, t2.Customer_P, t2.Purchase
from (
      SELECT (@row_number:=@row_number + 1) AS n, t.Customer_a, t.Activity
      from (
            select buyer_id as Customer_A,COUNT(buyer_id) As Activity
            FROM customer_info_mxs
            GROUP BY buyer_id
            order by Activity desc
            Limit 100
            )t
      ) t1
left join (
      SELECT (@row_number2:=@row_number2 + 1) AS n, 
      FROM (
            select buyer_id as Customer_P, SUM(purchase_amount) Purchase
            FROM customer_info_mxs
            GROUP BY buyer_id
            order by Purchase desc
            Limit 100
            )t
      ) t2 on t2.n=t1.n

基本思想是,我只是在表 1 (t1) 上創建一些臨時編號 0-99 並加入到表 2 (t2) 上的臨時編號

暫無
暫無

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

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