SQLite:连接两个select语句
我有两个select语句,我正在寻找将它们合并为一个语句的方法。谢谢你的帮助和建议SQLite:连接两个select语句,sql,sqlite,Sql,Sqlite,我有两个select语句,我正在寻找将它们合并为一个语句的方法。谢谢你的帮助和建议 Original: 1 2 3 4 5 6 Sql: Select * From (Select * From tbl1 Where Id < 4 Order By Id Desc Limit 1) Order By Id; Select * From tbl1 Where Id >= 4 Order By Id; Result: 3 4 5 6 看起来你需要一个新的 仅当两条语句的结果具有相同
Original:
1
2
3
4
5
6
Sql:
Select * From (Select * From tbl1 Where Id < 4 Order By Id Desc Limit 1) Order By Id;
Select * From tbl1 Where Id >= 4 Order By Id;
Result:
3
4
5
6
看起来你需要一个新的
仅当两条语句的结果具有相同的列计数和类型时才有效。使用此选项有什么意义:
Select * From (Select * From tbl1 Where Id < 4 Order By Id Desc Limit 1) Order By Id;
您的第一个查询可以看作是一个完整的表。同样,您的第二个查询也可以被视为另一个表
然后,使用SQL运算符联合,您可以得到一个组合结果集,将这两个“表”连接起来
有关详细信息,请浏览以下链接:
UNION ALL将更有效。@这取决于所需的结果。UNION ALL包含重复项。OP似乎不希望有这样的结果。@CL你说得对。在这种情况下,结果本身是相互排斥的。UNION ALL将给出相同的结果,而无需进行重复检查。如果绩效不是一个大问题,我还是更喜欢UNION,因为它表达了声明的意图,而没有做出假设。在我看来,这将是可读性和可维护性更好的代码。你仍然有一个正确的观点:-谢谢你的答案和教程链接。你能告诉我Kirill Nay给出的有无联合答案的区别吗?澄清一下:Kirill的查询不在MySQL中运行。MySQL 5.6.17不支持带IN的查询以及有限制的子查询。由于我使用的是MySQL,我很难将我的查询与Kirill的查询进行任何比较。抱歉我之前的评论。我不明白你为什么说抱歉。无论如何,正如我所说的,查询是针对SQLite的。我想知道的是,在性能和最佳实践方面,一个是否优于另一个。在性能方面,我想没有联合的查询更好。就实践而言,这是迄今为止最简单和最推荐的方法。
Select * From (Select * From tbl1 Where Id < 4 Order By Id Desc Limit 1) Order By Id;
Select * From tbl1 Where Id < 4 Order By Id Desc Limit 1
(SELECT * FROM tbl1 WHERE Id < 4 ORDER BY Id DESC LIMIT 1)
UNION
(SELECT * FROM tbl1 WHERE Id >= 4 ORDER BY Id ASC)
ORDER BY Id