小编use*_*123的帖子

将all与具有不同列数的查询联合起来

我遇到一个案例,我希望返回错误的sqlite查询实际上是成功的,我想知道是否有人可以指出为什么这个查询是有效的.

CREATE TABLE test_table(
  k INTEGER,
  v INTEGER
);

INSERT INTO test_table( k, v ) VALUES( 4, 5 );

SELECT * FROM(
  SELECT * FROM(
    SELECT k, v FROM test_table WHERE 1 = 0
  )
  UNION ALL
  SELECT * FROM(
    SELECT rowid, k, v FROM test_table
  )
)
Run Code Online (Sandbox Code Playgroud)

上面的方块

我认为联合两个具有不同列数的选择将返回错误.如果我移除最外层,SELECT *那么我会收到我期待的错误:SELECTs to the left and right of UNION ALL do not have the same number of result columns.

sql sqlite

11
推荐指数
2
解决办法
5万
查看次数

标签 统计

sql ×1

sqlite ×1