我需要你的帮助,我是新手使用垂直表,我正在寻找现在使用WHERE子句搜索表 当field = 1表示某个值时。
结果是意外的,字段返回NULL值,以查找此link
中的结果以下是创建表格的代码:
CREATE TABLE yourtable
(`userid` varchar(100), `field` varchar(200), `data` varchar(100));
INSERT INTO yourtable
(`userid`, `field`, `data`)
VALUES
('1', '4', 'Blank'),
('2', '4', 'Blank'),
('1', '1', 'Amani'),
('1', '2', 'Engineering'),
('1', '3', 'Cairo'),
('2', '1', 'Adel'),
('2', '2', 'Engineering'),
('2', '3', 'Cairo');
给出意外结果的查询
select
userid,
MAX(CASE WHEN field=1 THEN data ELSE NULL END) AS Name,
MAX(CASE WHEN field=2 THEN data ELSE NULL END) AS Faculty,
MAX(CASE WHEN field=3 THEN data ELSE NULL END) AS University,
MAX(CASE WHEN field=4 THEN data ELSE NULL END) AS Place_Status
FROM yourtable
WHERE data='Amani'
GROUP BY userid;
我相信你可以知道为什么会发生这种情况,并且如果有任何其他方式来实现搜索而不使用where子句,欢迎
答案 0 :(得分:2)
您可以按以下方式编写查询:
select
userid,
MAX(CASE WHEN field=1 THEN data END) AS Name,
MAX(CASE WHEN field=2 THEN data END) AS Faculty,
MAX(CASE WHEN field=3 THEN datL END) AS University,
MAX(CASE WHEN field=4 THEN data END) AS Place_Status
FROM
yourtable
WHERE
userid IN (SELECT userid from yourtable where data='Amani')
GROUP BY userid;
由于where子句,您的查询将返回所有空值 - 只会选择以下行:
('1', '1', 'Amani')