select count(*)+ count(*)此sql语句会产生任何结果或错误吗?

时间:2018-06-21 05:26:31

标签: sql database

我在面试时曾遇到过这个问题,例如error,1,2,3

现在得到的结果是:2

1 个答案:

答案 0 :(得分:-1)

select count(*)+COUNT(*)
  

结果是2

通常所有选择的形式都是SELECT [列,列上的标量计算,列上的分组计算或标量计算] FROM [表或表的连接等]

因为这允许简单的标量计算,所以我们可以执行类似SELECT 1 + 1 FROM SomeTable的操作,并且它将为表SomeTable中的每一行返回一个值为2的记录集。

现在,如果我们不在乎任何表,而是只想进行标量计算,则可能要执行类似SELECT 1 + 1的操作。这是标准不允许的,但它很有用,而且大多数数据库允许这样做(除非最近更改,Oracle否则不会这样做,至少以前没有这么做)。

因此,这样的裸SELECT就像被视为具有一个FROM子句一样,该SELECT子句指定一个表只有一行且没有任何列(当然这是不可能的,但是确实可以做到)。因此,SELECT 1 + 1成为ImaginaryTableWithOneRow的SELECT 1 + 1,它将返回单行和单列的值为2。

通常我们不会考虑这一点,只是习惯了裸SELECT会给出结果的事实,甚至都没有想到必须选择一些单行的东西才能返回一行的事实。

在执行SELECT COUNT()时,您执行了与ImaginaryTableWithOneRow中的SELECT COUNT()等效的操作,该操作当然会返回1。

参考文献:Why MySQL COUNT without table name gives 1