[英]mysql Complex select with just one table
Here is my table structure: 这是我的表结构:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,lead_id INT NOT NULL
,form INT NOT NULL
,value VARCHAR(20) NOT NULL
,field_no INT NOT NULL
);
INSERT INTO my_table VALUES
( 1 ,1 ,1 ,'John' ,5),
( 2 ,1 ,1 ,'Smith' ,6),
( 3 ,1 ,1 ,'987654321',3),
( 4, 2 ,1 ,'Sam' ,5),
( 5 ,2 ,1 ,'Long' ,6),
( 6 ,2 ,1 ,'42254545' ,3),
( 7 ,3 ,2 ,'23' ,12),
( 8 ,3 ,2 ,'Foo' ,5),
( 9 ,3 ,2 ,'Bar' ,3),
(10 ,4 ,1 ,'Simon' ,5),
(11 ,4 ,1 ,'Rhodes' ,6),
(12 ,4 ,1 ,'659874' ,3);
http://sqlfiddle.com/#!2/77f80 http://sqlfiddle.com/#!2/77f80
Is it possible to select the following in just one SELECT statement: 是否可以在一个SELECT语句中选择以下内容:
RESULT ROW 1: "John Smith", "987654321" 结果行1:“ John Smith”,“ 987654321”
RESULT ROW 2: "Sam Long", "42254545" 结果行2:“ Sam Long”,“ 42254545”
RESULT ROW 3: "Simon Rhodes", "659874" 结果行3:“ Simon Rhodes”,“ 659874”
ie. 即。 If this was on ONE row, the select would be: 如果在“单行”上,则选择为:
SELECT CONCAT(Name," ", Surname) as fullname
, employeeNo from tableA WHERE form = "1" group by lead_id SELECT CONCAT(Name,“”,Surname)作为fullname
,从tableA WHERE形式=“ 1”由lead_id分组
Please help 请帮忙
This is just a basic EAV model 这只是一个基本的EAV模型
SELECT lead_id
, MAX(CASE WHEN field_no = 5 THEN value END) firstname
, MAX(CASE WHEN field_no = 6 THEN value END) lastname
, MAX(CASE WHEN field_no = 3 THEN value END) telephone
, MAX(CASE WHEN field_no = 12 THEN value END) number
FROM my_table
GROUP
BY lead_id;
http://sqlfiddle.com/#!2/ea3b1f/1 http://sqlfiddle.com/#!2/ea3b1f/1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.