mysql“;其中;不使用;从「;
这是有效的语法吗?在显式命名表和列时,似乎应该隐含mysql“;其中;不使用;从「;,mysql,sql,Mysql,Sql,这是有效的语法吗?在显式命名表和列时,似乎应该隐含from子句,table.column SELECT distinct concat(\"Question \", q.place) as question FROM q INNER JOIN test ON test.id = q.test AND q.id NOT IN ( SELECT responses.question
from
子句,table.column
SELECT
distinct concat(\"Question \", q.place) as question
FROM q
INNER JOIN test
ON test.id = q.test
AND q.id NOT IN (
SELECT responses.question
where //Is this Valid or do I need to select from a table explicitly?
responses.tester = tester.id)
INNER JOIN test
ON test.id = testingsession.test
INNER JOIN tester
ON tester.test = test.id
WHERE
tester.id = :id
ORDER BY
questions.position
那是无效的!您不能使用未包含在
from/JOIN
部分(此处为responses.tester
)中的表中的列。您还必须加入响应
。在MySQL中,如果没有FROM
子句,则可以使用SELECT
,但它会返回单例行(类似于使用Oracle的特殊双表),并且不能使用WHERE
子句
在您的例子中,SELECT查询从一个表返回值,因此您需要一个from
子句来引用该表
回答你的问题,不,你所拥有的是无效的
注意事项: 为了提高性能,我会在
非IN(相关子查询)
上使用反连接模式
语法中有几个问题:
您已经将测试表引用了两次。这些引用中至少有一个将被分配别名
您有一个对testingsession.test
的引用,但查询中没有testingsession
行源
查询引用了问题。在ORDER BY
子句中定位,但没有问题
行源。好的,它是否有效或产生错误?指定表有什么问题?好的,谢谢。这有什么原因吗?这似乎是从表中选择行的一种非常直观的方式。@CraigPatrickLafferty我想答案就在你的评论中,“从表中选择行”。如果没有来自的,
则没有可供选择的表。