Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择不同字段作为一个字段(无CONCAT)_Mysql_Sql_Field - Fatal编程技术网

Mysql 选择不同字段作为一个字段(无CONCAT)

Mysql 选择不同字段作为一个字段(无CONCAT),mysql,sql,field,Mysql,Sql,Field,我有一个包含两个字段的表,分别是val1和val2,它们包含相同的类型。val1是强制性的,val2是可选的——但如果存在,则应与val1一样重要 为此,我想检索所有的值,无论是来自val1还是val2字段,到一个字段res中,这样 INSERT INTO VALS (val1, val2) VALUES (1, null), (2, null), (3, 4), (5, null), (6, 7), (8, null); 只能检索到一个字段: +------+ | res | +-----

我有一个包含两个字段的表,分别是val1和val2,它们包含相同的类型。val1是强制性的,val2是可选的——但如果存在,则应与val1一样重要

为此,我想检索所有的值,无论是来自val1还是val2字段,到一个字段res中,这样

INSERT INTO VALS (val1, val2) VALUES
(1, null),
(2, null),
(3, 4),
(5, null),
(6, 7),
(8, null);
只能检索到一个字段:

+------+
| res  |
+------+
| 1    |
| 2    |
| 3    |
| 4    |
| 5    |
| 6    |
| 7    |
| 8    |
+------+
如何做到这一点?

试试这个:

select  resultcol from ( select distict val1 as resultcol from vals union select distinct val2 as resultcol from vals)alias order by resultcol
联合删除所有重复值

尝试以下操作:

SELECT val1 as res 
FROM VALS

UNION

SELECT val2 as res  
FROM VALS
WHERE val2 is notNULL;
你不需要区分,联盟本身就是一个集合

一个带有union的查询

SELECT a AS f FROM t
UNION 
SELECT b AS f FROM t HAVING f IS NOT NULL ORDER BY f

当两列都可以为空时工作

@MKhalidJunaid我很惊讶你制作演示的速度有多快。什么魔法-谢谢当第一列为null而第二列不为null时,将不工作。如果您需要,您可能会看到我的解决方案非常类似,但使用了别名column@GrijeshChauhan我已经告诉过你神奇之处在于文本到ddl选项:@SergeyTelshevsky根据OP的示例日期集col2可以为空而不是col1,请参见中的表定义question@MKhalidJunaid我试过了,我不能,我会再试一次,谢谢提醒我:根据表定义,第一列指定为非空是的,你的建议是有帮助的,否则我使用的是非空;两个地方。@GrijeshChauhan相同的答案,并不意味着它不起作用:@SergeyTelshevsky是的,我是说我喜欢你的答案。@GrijeshChauhan哦,我明白了,很抱歉:
SELECT a AS f FROM t
UNION 
SELECT b AS f FROM t HAVING f IS NOT NULL ORDER BY f