查询:
Explain SELECT * FROM TABLE WHERE 1 = 2
显示给定表的字段名称。有谁能解释这种语法? 提前谢谢。
答案 0 :(得分:5)
您没有返回任何结果,因为1 = 2
为false。 (没有与WHERE
子句匹配的记录,因此您只需获取表格标题,并且没有记录。)
答案 1 :(得分:3)
好吧,由于1不等于2,查询结果将为空。即,对于任何可能的输出中没有行,表达式1 = 2是否为真。所以你得到的只是列标题,(字段名称),没有实际的数据行...
答案 2 :(得分: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已经确定它将导致零行。
同样,其他列将帮助您识别正在使用的INDEXES和其他有用信息。
有关详细信息,请参阅 - EXPLAIN Syntax
答案 3 :(得分:2)
查询将不会产生任何结果,因为where条件为false ...如果1,2的引用是列标题并产生结果,则1 = 2的逻辑条件为false。
答案 4 :(得分:1)
explain
用于查看查询的执行计划。如果在查询开头添加它,则可以看到哪些索引用于选择,依此类推。
因此查询不会显示任何结果。如果您从语句中删除explain
并执行select ...
,那么您将获得查询结果。在您的情况下,由于1=2
永远不会true
,因此无效。
请参阅EXPLAIN
答案 5 :(得分:0)
您正在返回一个空集(您在列中投影列名和数据,但where子句会过滤所有内容,因此您只看到列名称)。
你可以用少量几个字符来实现同样的目标。
select top 0 * from TABLE
答案 6 :(得分:-3)
SELECT *(所有表)FROM TABLE(这里的表名是表)WHERE 1(表的名称1)(等于)= 2
e.g。显示表的表中所有表,其中名为1的表等于2。
干杯。,