4

查询:

Explain SELECT * FROM TABLE WHERE 1 = 2

显示给定表的字段名称。谁能解释这种语法?提前致谢。

4

7 回答 7

5

你没有返回任何结果,因为1 = 2是假的。(没有与该WHERE子句匹配的记录,因此您只得到表标题,没有记录。)

于 2012-10-22T17:03:43.350 回答
3

好吧,既然 1 不等于 2,那么查询的结果就会是空的。即,对于任何可能的输出中没有行,表达式 1 = 2 是否为真。所以你得到的只是列标题(字段名称),没有实际的数据行......

于 2012-10-22T17:04:56.253 回答
3

EXPLAIN 是 MySQL 实用程序语句

EXPLAIN语句可以用作获取有关 MySQL 如何执行语句的信息的一种方式。

当您在SELECT语句前加上关键字EXPLAIN时,MySQL 会显示来自优化器的有关查询执行计划的信息。也就是说,MySQL 解释了它将如何处理该语句,包括有关表如何连接以及以何种顺序连接的信息。

简而言之,EXPLAIN 语句用于调查 MySQL 是如何执行查询的。

您的语句生成以下输出 -

id  select_type     table   type    possible_keys   key     key_len     ref     rows    Extra
1   SIMPLE  NULL    NULL    NULL    NULL    NULL    NULL    NULL    Impossible WHERE

正如您在列下看到的,Extra它正在返回Impossible WHERE文本。这意味着 MySQL 已经确定它将导致零行。

同样,其他列将帮助您识别正在使用的索引和其他有用信息。

有关更多信息,请参阅 - EXPLAIN 语法

于 2012-10-22T17:10:45.123 回答
2

查询将不会产生任何结果,因为 where 条件为假......如果 1、2 的引用是列标题并产生结果,则 1 = 2 的逻辑条件为假。

于 2012-10-22T17:58:10.183 回答
1

explain用于查看查询的执行计划。如果您在查询的开头添加它,您可以看到哪些索引用于选择等等。

所以查询不会显示任何结果。如果您explain从语句中删除并执行, select ...那么您将获得查询结果。在您的情况下,这将不会有任何结果,因为1=2is never true

解释

于 2012-10-22T17:05:54.457 回答
0

您正在返回一个空集(您在列中投影列名和数据,但 where 子句过滤所有内容,因此您只看到列名)。

你可以用更少的几个字符来实现同样的目标。

select top 0 * from TABLE
于 2012-10-22T17:09:14.703 回答
-3

SELECT *(all tables) FROM TABLE(table name here is table) WHERE 1(table's name 1) (equals) = 2

例如,显示表中名为 1 的表等于 2 的所有表。

干杯。,

于 2012-10-22T17:05:05.927 回答