Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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与SQLITE的语法差异。。每个派生表都必须有一个别名_Mysql_Sqlite - Fatal编程技术网

MYSQL与SQLITE的语法差异。。每个派生表都必须有一个别名

MYSQL与SQLITE的语法差异。。每个派生表都必须有一个别名,mysql,sqlite,Mysql,Sqlite,我是SQL的业余爱好者,我是一名教师,而不是程序员,我写过一些在SQLITE中工作但在MYSQL中不工作的代码。我有一个名为“分数”的表格,包括学生姓名、练习和分数。除了归还已完成的练习外,我还希望归还尚未完成的练习。为此,我使用交叉连接生成学生和练习的所有组合。在SQLITE中,对于尚未完成特定练习的学生,该函数返回空值,这很有用 在MYSQL中使用此代码时,它抱怨每个派生表都必须有自己的别名 我理解这意味着子查询必须有一个“AS…”术语。然而,无论我在哪里添加它,我仍然会收到该错误。我尝试过

我是SQL的业余爱好者,我是一名教师,而不是程序员,我写过一些在SQLITE中工作但在MYSQL中不工作的代码。我有一个名为“分数”的表格,包括学生姓名、练习和分数。除了归还已完成的练习外,我还希望归还尚未完成的练习。为此,我使用交叉连接生成学生和练习的所有组合。在SQLITE中,对于尚未完成特定练习的学生,该函数返回空值,这很有用

在MYSQL中使用此代码时,它抱怨每个派生表都必须有自己的别名

我理解这意味着子查询必须有一个“AS…”术语。然而,无论我在哪里添加它,我仍然会收到该错误。我尝试过在线SQL“验证器”来帮助我,但仍然没有成功

有人能帮我改进代码吗?多谢各位

SELECT othertable.name , othertable.exercise, scores.score
from ((select distinct name from scores)
CROSS JOIN (select distinct exercise from scores)) AS othertable
left join scores
on(scores.name = othertable.name AND scores.exercise = othertable.exercise )
order by othertable.name, othertable.exercise

代码的问题在于错误是什么,在MySql中,必须为查询的每个子查询设置别名。 但是,不要对2个交叉连接的子查询及其连接结果使用别名,而是删除子查询的括号并使用3个别名:

SELECT n.name, e.exercise, s.score
FROM (SELECT DISTINCT name FROM scores) AS n
CROSS JOIN (SELECT DISTINCT exercise FROM scores) AS e
LEFT JOIN scores AS s
ON s.name = n.name AND s.exercise = e.exercise
ORDER BY n.name, e.exercise  

选择distinct name from scores AS alias_hereServer必须能够在查询的任何点使用其全名db.table.column引用任何列,即在该列可见的任何点为任何现有列指定表/子查询别名。在您的代码中-由两个子查询生成的列从分数中选择不同的列在交叉连接的级别上与此规则不匹配。非常感谢Alex和Akina!谢谢你,这段代码有效