SQL 查询中的“b”是什么意思?

AK_*_*AK_ 2 mysql sql

在以下查询中:

SELECT 1 FROM (SELECT pass 
                 FROM table_name 
                 WHERE ssid=?) b 
  WHERE pass=?
Run Code Online (Sandbox Code Playgroud)

ssid) b WHERE pass=?;原始查询中的实际含义是什么?

Luk*_*zda 5

SELECT 1 FROM (SELECT pass FROM table_name WHERE ssid=?) b WHERE pass=?
Run Code Online (Sandbox Code Playgroud)

与...一样:

SELECT 1 FROM (SELECT pass FROM table_name WHERE ssid=?) AS b WHERE pass=?
Run Code Online (Sandbox Code Playgroud)

b是子查询的别名。然后在外部查询中,您可以引用如下列:

SELECT b.pass FROM (SELECT pass FROM table_name WHERE ssid=?) AS b 
Run Code Online (Sandbox Code Playgroud)

参见手册

子查询在 SELECT 语句的 FROM 子句中是合法的。实际的语法是:

SELECT ... FROM (子查询)[AS] 名称 ...

[AS] name 子句是强制性的,因为 FROM 子句中的每个表都必须有一个 name。子查询选择列表中的任何列都必须具有唯一的名称。

  • @AK_ 它不会以任何方式影响结果。MySQL要求子查询有别名;在这种情况下,它除了满足该要求外没有其他目的。在其他情况下,例如将子查询联接到表(或另一个子查询),它提供了一个在引用其结果字段时使用的名称(在子查询结果字段与任何它的字段共享名称的情况下出现歧义时,需要使用该名称)正在合并)。 (2认同)