从表中选择所有内容,但不返回任何行,因为1不等于2。

4

查询语句:

Explain SELECT * FROM TABLE WHERE 1 = 2

显示给定表的字段名称。有人能解释一下这个语法吗?提前致谢。

2
EXPLAIN 是 MySQL 的实用语句 - http://dev.mysql.com/doc/refman/5.5/en/explain.html - Parag Meshram
实际上,如果一个列被称为1,那么SELECT * FROM TABLE WHERE 1 = 2可能会返回记录。 - david strachan
7个回答

5

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


谢谢您接受我的答案。我承认我甚至没有看到您的查询中的“解释”一词,所以我甚至没有尝试回答问题的那部分。 - John

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 Syntax


3

由于1不等于2,查询结果将为空。也就是说,在任何可能的输出中,没有一行数据满足表达式1=2。因此,你只能得到列标题(字段名称),而没有实际数据行...


2

查询将不会返回结果,因为where条件为false...在1 = 2的逻辑条件下,如果1,2的引用是列标题,则为false并返回结果。


1

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

因此,该查询不会显示任何结果。如果从语句中删除explain并执行select ...,则将得到查询的结果。在您的情况下,这将是没有结果,因为1=2永远不会是true

请参阅EXPLAIN


0

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

您可以用更少的字符实现相同的效果。

select top 0 * from TABLE

问题被标记为 [tag:mysql]。 - eggyal

-3

SELECT *(所有表) FROM TABLE(表名为table) WHERE 1(表名1) (等于) = 2

例如:从表格的table中显示所有表格,其中表格1的名称等于2。

Cheers.,


嗯...这是没有意义的...因为1 != 2 - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接