UNION SELECTs - 循环?或单个查询?

时间:2014-07-18 12:38:31

标签: php mysql sql mysqli

如果我使用UNION从数据库中生成多个SELECT,则认为是一个查询?或多个查询?

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

这被视为单个查询吗?或2个查询?

(我每小时的查询次数有限,我想优化我的代码)

谢谢!

2 个答案:

答案 0 :(得分:5)

来自文档:

  

SQL UNION运算符用于组合2个或更多的结果集   SELECT语句。它删除各种之间的重复行   SELECT语句。

所以你的2选择被合并为一个查询;)

http://www.techonthenet.com/sql/union.php

答案 1 :(得分:2)

这是其他人指出的一个查询。

在编码到项目中时,我会对此方法保持警惕,除非这两个表具有非常相似的数据,原因如下。

A)table1选择的列数必须与table2选择的列数相匹配。您可以通过添加NULL列来解决此问题。

B)您从第二个选择中丢失了列名。

C)无法分辨哪些行来自哪个表格。您可以通过为每个选择添加静态类型列来解决此问题。

D)很容易错过一些东西并使用错误的数据。

作为补充说明。您正在使用UNION,它会从结果中删除欺骗,尽管您可能不太可能在两个表中都有相同的数据;如果您尝试减少总查询量,则您看起来在概念上需要UNION ALL