簡體   English   中英

MySQL復雜選擇只有一個表

[英]mysql Complex select with just one table

這是我的表結構:

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

是否可以在一個SELECT語句中選擇以下內容:
結果行1:“ John Smith”,“ 987654321”
結果行2:“ Sam Long”,“ 42254545”
結果行3:“ Simon Rhodes”,“ 659874”

即。 如果在“單行”上,則選擇為:
SELECT CONCAT(Name,“”,Surname)作為fullname ,從tableA WHERE形式=“ 1”由lead_id分組


請幫忙

這只是一個基本的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

暫無
暫無

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

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