Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用多个SELECT语句时,每个派生表都必须有自己的别名-error_Mysql_Select - Fatal编程技术网

Mysql 使用多个SELECT语句时,每个派生表都必须有自己的别名-error

Mysql 使用多个SELECT语句时,每个派生表都必须有自己的别名-error,mysql,select,Mysql,Select,我试图在一个查询中使用多个SELECT语句从数据库中获取数据,但出现了一个错误。查询是: SELECT * FROM (SELECT * FROM players WHERE lid = 0) WHERE NOT EXISTS (SELECT * FROM players WHERE lid =

我试图在一个查询中使用多个SELECT语句从数据库中获取数据,但出现了一个错误。查询是:

SELECT * 
        FROM (SELECT * 
              FROM players 
              WHERE lid = 0)
        WHERE NOT EXISTS (SELECT * 
                          FROM players 
                          WHERE lid = 1)
错误是get是:

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1248每个派生表必须有自己的别名”

我尝试将查询更改为

SELECT * 
        FROM (SELECT * 
              FROM players 
              WHERE lid = 0)
        WHERE NOT EXISTS (SELECT * 
                          FROM players 
                          WHERE lid = 1) AS T

但又犯了同样的错误。我无法理解查询的哪个部分需要别名,以及为什么from表需要别名

SELECT * 
        FROM (SELECT * 
              FROM players 
              WHERE lid = 0) as T
        WHERE NOT EXISTS (SELECT * 
                          FROM players 
                          WHERE lid = 1)
行得通


尽管这个问题似乎毫无意义。这不再是一个语法错误

给每个派生表一个唯一的别名可能是必须用于FROM子句的子查询的as T的副本,而不是不存在的地方不需要从lid=1 Bcoz的播放器中选择*第一个子查询结果与第二个子查询结果相同。为什么没有意义?选择*FROM players,其中lid=0为我提供所有玩家的列表,选择*FROM players,其中lid=1为我提供具有特定属性的玩家列表。如果不存在,那么就给我那些不具备所有属性的玩家。你认为这是一种错误的实现方式吗?这没有意义,因为如果你从lid=0的玩家中选择,那么它已经排除了lid=1的玩家。这是多余的,而且可能效率低下。lid=0是所有玩家的列表。它包含所有独特的玩家。lid=1基本上是一个列表,其中包含0中的一些玩家,但lid设置为1