查询语句:
Explain SELECT * FROM TABLE WHERE 1 = 2
显示给定表的字段名称。有人能解释一下这个语法吗?提前致谢。
你没有返回任何结果,因为1 = 2
是假的。(没有记录与该WHERE
子句匹配,因此你只会得到表头,而没有记录。)
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 Syntax
由于1不等于2,查询结果将为空。也就是说,在任何可能的输出中,没有一行数据满足表达式1=2。因此,你只能得到列标题(字段名称),而没有实际数据行...
查询将不会返回结果,因为where条件为false...在1 = 2的逻辑条件下,如果1,2的引用是列标题,则为false并返回结果。
explain
被用于查看查询的执行计划。如果你在查询开头添加它,你可以看到哪些索引被用于选择等操作。
因此,该查询不会显示任何结果。如果从语句中删除explain
并执行select ...
,则将得到查询的结果。在您的情况下,这将是没有结果,因为1=2
永远不会是true
。
请参阅EXPLAIN
您正在返回一个空集合(您在列中投影列名和数据,但where子句过滤了所有内容,因此您只能看到列名)。
您可以用更少的字符实现相同的效果。
select top 0 * from TABLE
SELECT *(所有表) FROM TABLE(表名为table) WHERE 1(表名1) (等于) = 2
例如:从表格的table中显示所有表格,其中表格1的名称等于2。
Cheers.,
1 != 2
。 - Ben
EXPLAIN
是 MySQL 的实用语句 - http://dev.mysql.com/doc/refman/5.5/en/explain.html - Parag Meshram