0

我在整个互联网上进行了搜索,但没有找到我问题的答案。我希望这还没有具体发布,但如果你能指出我在哪里可以找到答案,我将不胜感激。

我能够在下面获取下表数据:

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

我只希望该查询字符串仅在锦标赛 ID 列的值等于特定值时提取相关数据。我该怎么做?

4

2 回答 2

0

试试这个查询。我认为您可以使用该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 个不同的锦标赛 ID 的样本数据,并且HAVING应用了该子句,以便只返回该锦标赛 ID 的值,您可以尝试删除 HAVING 并查看它返回 2 行。

您的 Group By 不是标准的,因为您也在选择 id 和 form_id 。我建议您删除 id 或使用 MIN(id) 或 MAX(id) 和GROUP BY lead_id,form_id

于 2014-01-16T04:05:04.920 回答
0

如果我明白你在问什么,请尝试:

SELECT * FROM TABLE_NAME
WHERE tournament_id = specific_value;
于 2014-01-16T02:55:04.320 回答