MySQL UNION SELECT和IN子句

dbndhjefj

我有两个非常简单的表:t1t2以下几行:

t1

id, name
1   PBN

t2

id, name
100 FIBERHOME

查询1:

SELECT name FROM t1 UNION SELECT name FROM t2 WHERE id IN (1)

结果是:PBN

查询2:

SELECT name FROM t1 UNION SELECT name FROM t2 WHERE id IN (100)

结果是:PBN,FIBERHOME

但是预期的结果是:FIBERHOME ..!是什么原因?

阿德里安·林奇(Adrian Lynch)

如果您只想要一个,请扩展@Knep的答案WHERE id IN ()

SELECT name FROM (
    SELECT id, name FROM t1
    UNION
    SELECT id, name FROM t2
) unioned
WHERE id IN (1,100)

速度不是明智的选择,因此最好进行测试。

还要注意id需要在外部使用的子查询中WHERE

我以为WHERE子句是全局的– @szpal

要回答有关为什么UNION中的所有查询都不使用WHERE的问题,请考虑两个不共享列的查询。

他们自己:

SELECT id, name FROM x WHERE colA = 123

和:

SELECT id, name FROM y WHERE colB = 456

然后与(不正确的)单个WHERE子句一起:

SELECT id, name FROM x
UNION
SELECT id, name FROM y
WHERE colB = 456 -- But table x doesn't have a colB!

鉴于(正确地)WHERE子句与每个查询一起位于:

SELECT id, name FROM x
WHERE colA = 123 -- I have a colA, still don't have a colB
UNION
SELECT id, name FROM y
WHERE colB = 456 -- I have a colB, still don't have a colA

每个人都是赢家!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySQL UNION SELECT和IN子句

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

MySQL UNION SELECT缺少字段

来自分类Dev

Mysql UNION SELECT缺少字段

来自分类Dev

禁用 MySQL 的 UNION SELECT 查询

来自分类Dev

where 子句中的 MySQL 未知列(UNION)

来自分类Dev

使用UNION / UNION ALL和Group By的MySQL查询错误

来自分类Dev

关于UNION和MySQL中的JOIN

来自分类Dev

MySQL-UNION和ORDER / SORT行

来自分类Dev

mysql查询与Join和union all

来自分类Dev

MySQL将“ ORDER BY”子句应用于UNION查询

来自分类Dev

mysql查询union和mysql_num_rows

来自分类Dev

在select子句中分配和使用mysql用户变量

来自分类Dev

在select子句中分配和使用mysql用户变量

来自分类Dev

在Select和where子句中优化MYSQL查询TIMEDIFF

来自分类Dev

mysql select中的if子句

来自分类Dev

mySQL UNION和LIMIT具有一个SELECT优先级

来自分类Dev

MySQL-具有RLIKE和GROUP BY的UNION SELECT-无法插入INNER JOIN

来自分类Dev

如何将select *与union结合使用?MySQL的

来自分类Dev

UNION SELECT 上的 MySQL COUNT 整数值并显示为值

来自分类Dev

MYSQL JOIN和IN子句

来自分类Dev

MySQL:使用UNION,MAX和GROUP BY的奇怪行为

来自分类Dev

如何在视图中使用MySQL UNION和SUM

来自分类Dev

在继承案例中使用 UNION 和 JOIN - MySQL

来自分类Dev

使用 UNION 和 DISTINCT 优化 MySQL 选择查询

来自分类Dev

MySQL JOIN UNION的结果

来自分类Dev

mysql UNION查询输出

来自分类Dev

MySQL多个ORDER BY与UNION