如何使用mysql使用where子句搜索垂直表



我需要你的帮助,我是垂直表的新手,我现在正在寻找使用WHERE子句搜索表当字段=1表示某个值时。

结果是意外的-字段返回NULL值,以在该链接中查找结果

以下是创建表格的代码:

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子句的情况下实现搜索,请

您可以这样写查询:

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子句的原因,您的查询将返回所有null值-只会选择以下行:

('1', '1', 'Amani')

最新更新