CREATE TABLE Table1
(`id` int, `group_id` int, `data_id` int, `value` varchar(19))
;
INSERT INTO Table1
(`id`, `group_id`, `data_id`, `value`)
VALUES
(1, 20, 15, 'Supplier'),
(2, 20, 1, 'Rahul'),
(3, 20, 2, 'Sharma'),
(4, 20, 3, '05/08/90'),
(5, 20, 4, 'india'),
(6, 21, 15, 'Consumer'),
(7, 21, 1, 'Rajesh'),
(8, 21, 2, 'Sharma'),
(9, 21, 3, '05/08/88'),
(10, 21, 4, 'india')
;
现在创建了一个表,我必须按供应商或消费者对值列中的数据进行排序,就像这样: 对于消费者:
f-name l-name dob location
-----------------------------------
Rajesh Sharma 05/08/88 india
and so on ....
对于供应商
f-name l-name dob location
-----------------------------------
Rahul Sharma 05/08/90 india
最佳答案
首先,您需要从您拥有的实体-属性-值存储中创建记录。您可以通过多种方式执行此操作。下面是一个使用 group by
的方法:
select max(case when data_id = 1 then value end) as fname,
max(case when data_id = 2 then value end) as lname,
max(case when data_id = 3 then value end) as dob,
max(case when data_id = 4 then value end) as location
from table1
group by group_id
having max(case when data_id = 15 then value end) = 'Consumer';
having
子句进行过滤,但您也可以添加一个指定记录类型的列。
关于php - 这怎么能在mysql中完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24803620/