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我想答案就在你的评论中,“从表中选择行”。如果没有来自的
则没有可供选择的表。