为什么MySQL union都显示了不同的结果;实际上是;同样的问题?
我在做一个查询,结果有误,我修改了,它可以工作,但查询与原始查询非常相似,请看: 原件:(不起作用) 结果:为什么MySQL union都显示了不同的结果;实际上是;同样的问题?,mysql,sql,select,union,Mysql,Sql,Select,Union,我在做一个查询,结果有误,我修改了,它可以工作,但查询与原始查询非常相似,请看: 原件:(不起作用) 结果: user1 | pass1 userUnion1 | passUnion1 user1 | pass1 passUnion1 | userUnion1 解决方案:(工作) 结果: user1 | pass1 userUnion1 | passUnion1 user1 | pass1 passUnion1 | userUnion1 查询的意图是合并相同的结果,但列反转,在原始查询中
user1 | pass1
userUnion1 | passUnion1
user1 | pass1
passUnion1 | userUnion1
解决方案:(工作)
结果:
user1 | pass1
userUnion1 | passUnion1
user1 | pass1
passUnion1 | userUnion1
查询的意图是合并相同的结果,但列反转,在原始查询中它不会反转列,但在解决方案查询中它会反转列。为什么
(注意,在最初的查询中,我要求将密码设置为用户名,将用户名设置为密码),您能解释一下吗?在第一个查询中:
select username, password from tbl_user
union all
select username as password, password as username from tbl_user
您只需将tbl_user
与自身结合起来。将忽略联合体后半部分中的别名。此查询与执行以下操作相同:
select username, password from tbl_user
union all
select username, password from tbl_user
同样,您的第二个工作查询与以下相同:
select username, password from tbl_user
union all
select password, username from tbl_user
MySQL和大多数数据库中联合查询的一般经验法则是,每个选择列表中的列类型和数量相同。在第一个查询中:
select username, password from tbl_user
union all
select username as password, password as username from tbl_user
您只需将tbl_user
与自身结合起来。将忽略联合体后半部分中的别名。此查询与执行以下操作相同:
select username, password from tbl_user
union all
select username, password from tbl_user
同样,您的第二个工作查询与以下相同:
select username, password from tbl_user
union all
select password, username from tbl_user
MySQL和大多数数据库中联合查询的一般经验法则是,每个选择列表中的列的类型和数量相同。联合中不同结果集的列按其位置(第一、第二、…)处理,而不是按列别名处理
如果联合操作按名称进行,则第一个查询将起作用。联合中不同结果集的列按其位置(第一、第二、…)处理,而不是按列别名处理 如果联合操作按名称工作,则第一个查询将工作