【问题标题】:mysql Complex select with just one table只有一张表的mysql复杂选择
【发布时间】:2014-04-21 06:58:33
【问题描述】:

这是我的表结构:

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 行:“约翰·史密斯”、“987654321”
结果第 2 行:“Sam Long”、“42254545”
结果第 3 行:“Simon Rhodes”、“659874”

即。如果这是在 ONE 行上,则选择将是:
SELECT CONCAT(Name," ", Surname) as fullname, employeeNo from tableA WHERE form = "1" group by lead_id


请帮忙

【问题讨论】:

    标签: mysql select subquery inner-join gravity-forms-plugin


    【解决方案1】:

    这只是一个基本的 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

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 1970-01-01
      • 2016-09-23
      • 2013-03-16
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      相关资源
      最近更新 更多