SELECT * FROM TABLE WHERE 1 = 2

时间:2012-10-22 17:01:55

标签: mysql sql database

查询:

Explain SELECT * FROM TABLE WHERE 1 = 2

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

7 个答案:

答案 0 :(得分:5)

您没有返回任何结果,因为1 = 2为false。 (没有与WHERE子句匹配的记录,因此您只需获取表格标题,并且没有记录。)

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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已经确定它将导致零行。

同样,其他列将帮助您识别正在使用的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。

干杯。,

相关问题