从MySQL数据库表版本8.0.17中提取非空数据

从MySQL数据库表版本8.0.17中提取非空数据,mysql,Mysql,这是数据库MySql8.0.17版上的wtable的结构和数据 DROP TABLE IF EXISTS `wtable`; CREATE TABLE `wtable` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `img` varchar(255) DEFAULT NULL, `ppt` varchar(255) DEFAULT NULL, `xls` varchar(255) DEFAULT NULL, `pdf` varchar(2

这是数据库
MySql
8.0.17版上的
wtable
的结构和数据

DROP TABLE IF EXISTS `wtable`;
CREATE TABLE `wtable`  (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `img` varchar(255) DEFAULT NULL,
  `ppt` varchar(255) DEFAULT NULL,
  `xls` varchar(255) DEFAULT NULL,
  `pdf` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB;

-- ----------------------------
-- Records of wtable
-- ----------------------------
INSERT INTO `wtable` VALUES (1, NULL, 'file.ppt', NULL, 'file.pdf');
INSERT INTO `wtable` VALUES (2, NULL, NULL, 'file.xls', NULL);
INSERT INTO `wtable` VALUES (3, 'file.jpg', NULL, NULL, NULL);
我需要从
wtable
所有填充的行中提取数据,这是我的查询

SELECT
    img,
    ppt,
    xls,
    pdf 
FROM
    `wtable` 
WHERE
    ( img IS NOT NULL OR ppt IS NOT NULL OR xls IS NOT NULL OR pdf IS NOT NULL );

+----------+----------+----------+----------+
| img      | ppt      | xls      | pdf      |
+----------+----------+----------+----------+
| NULL     | file.ppt | NULL     | file.pdf |
| NULL     | NULL     | file.xls | NULL     |
| file.jpg | NULL     | NULL     | NULL     |
+----------+----------+----------+----------+
3 rows in set (0.02 sec)
但我需要这个输出。。。有什么建议吗

+----------+
| Allfiles |
+----------+
| file.ppt |
| file.pdf |
| file.xls |
| file.jpg |
+----------+
帮我做吧你需要工会

SELECT    img allfiles
FROM        `wtable`
WHERE  img IS NOT NULL 
UNION ALL 
SELECT      ppt
FROM        `wtable`
WHERE  ppt IS NOT NULL 
UNION ALL 
SELECT      pdf
FROM        `wtable`
WHERE  pdf IS NOT NULL 
UNION ALL 
SELECT      xls
FROM        `wtable`
WHERE  xls IS NOT NULL 
对不同的结果使用UNION,对重复的行使用UNION ALL