查询:
Explain SELECT * FROM TABLE WHERE 1 = 2
显示给定表的字段名称。谁能解释这种语法?提前致谢。
你没有返回任何结果,因为1 = 2
是假的。(没有与该WHERE
子句匹配的记录,因此您只得到表标题,没有记录。)
好吧,既然 1 不等于 2,那么查询的结果就会是空的。即,对于任何可能的输出中没有行,表达式 1 = 2 是否为真。所以你得到的只是列标题(字段名称),没有实际的数据行......
该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 语法
查询将不会产生任何结果,因为 where 条件为假......如果 1、2 的引用是列标题并产生结果,则 1 = 2 的逻辑条件为假。
explain
用于查看查询的执行计划。如果您在查询的开头添加它,您可以看到哪些索引用于选择等等。
所以查询不会显示任何结果。如果您explain
从语句中删除并执行, select ...
那么您将获得查询结果。在您的情况下,这将不会有任何结果,因为1=2
is never true
。
见解释
您正在返回一个空集(您在列中投影列名和数据,但 where 子句过滤所有内容,因此您只看到列名)。
你可以用更少的几个字符来实现同样的目标。
select top 0 * from TABLE
SELECT *(all tables) FROM TABLE(table name here is table) WHERE 1(table's name 1) (equals) = 2
例如,显示表中名为 1 的表等于 2 的所有表。
干杯。,