簡體   English   中英

使用數據透視表mySQL查詢特定值

[英]Query a specific value with Pivot Table mySQL

我已經在整個互聯網上進行了搜索,但是沒有運氣找到問題的答案。 我希望這還沒有專門發布,但是如果您能指出我可以找到答案的地方,我將不勝感激。

我能夠獲取以下表格數據:

id   lead_id form_id field_number   value
1       1      1        1           Hosker
2       1      1        7           b**********@yahoo.com
3       1      1        6           Hyundai Tournament of Champions
4       1      1        3           Adam Scott
5       1      1        4           Harris English
6       1      1        5           2014-01-02 23:59:47
7       1      1        8           5b409692-e9ed-486e-8d77-7d734f1e023d

並使用以下查詢字符串獲取以下結果:

SELECT id, lead_id, form_id, 
MAX(case when field_number = 1 then value end) username, 
MAX(case when field_number = 7 then value end) email, 
MAX(case when field_number = 6 then value end) tournament_name, 
MAX(case when field_number = 3 then value end) primary_golfer, 
MAX(case when field_number = 4 then value end) backup_golfer, 
MAX(case when field_number = 5 then value end) date, 
MAX(case when field_number = 8 then value end) tournament_id 
FROM `wp_rg_lead_detail` GROUP BY lead_id



id   lead_id form_id field_number   value     value                  value                              value          value            value                      value
 1      1      1        1           Hosker    b**********@yahoo.com  Hyundai Tournament of Champions    Adam Scott    Harris English    2014-01-02 23:59:47    5b409692-e9ed-486e-8d77-7d734f1e023d

我只希望該查詢字符串僅在race_id列的值等於特定值時才提取相關數據。 我該怎么辦?

如果我了解您的要求,請嘗試:

SELECT * FROM TABLE_NAME
WHERE tournament_id = specific_value;

試試這個查詢。 我認為您可以使用HAVING子句。

SELECT id, lead_id, form_id, 
MAX(case when field_number = 1 then value end) username, 
MAX(case when field_number = 7 then value end) email, 
MAX(case when field_number = 6 then value end) tournament_name, 
MAX(case when field_number = 3 then value end) primary_golfer, 
MAX(case when field_number = 4 then value end) backup_golfer, 
MAX(case when field_number = 5 then value end) date, 
MAX(case when field_number = 8 then value end) tournament_id 
FROM `wp_rg_lead_detail` GROUP BY lead_id
HAVING tournament_id = '5b409692-e9ed-486e-8d77-7d734f1e023d'

sqlFiddle在sqlFiddle中,我有2個不同的tour_id的示例數據,並且應用了HAVING子句,以便僅返回該tour_id的值,您可以嘗試刪除HAVING並看到它返回2行。

由於您同時選擇了id和form_id,因此Group By不是標准的。 我建議您刪除id或使用MIN(id)或MAX(id)和GROUP BY lead_id,form_id

暫無
暫無

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

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