Php 无法找出mysql查询中的错误

Php 无法找出mysql查询中的错误,php,mysql,sql,Php,Mysql,Sql,我现在正在尝试一个小时,但仍然无法找出此查询中的问题:/ SELECT * FROM question ORDER BY question_id DESC LIMIT 3 WHERE topic_name = (SELECT * FROM topic WHERE subject_name = 'Maths') 这就是错误: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 在“WHERE topic\u name”附近=从主题WHERE subj

我现在正在尝试一个小时,但仍然无法找出此查询中的问题:/

SELECT * FROM question ORDER BY question_id DESC LIMIT 3 WHERE topic_name = (SELECT * FROM topic WHERE subject_name = 'Maths')
这就是错误:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解要使用的正确语法 在“WHERE topic\u name”附近=从主题WHERE subject\u name中选择*= “一号线的数学


你的陈述都有问题。正确的说法是:

SELECT *
FROM question
WHERE topic_name = (SELECT * FROM topic WHERE subject_name = 'Maths')
ORDER BY question_id DESC LIMIT 3 ;
但是,由于子查询的原因,这将不起作用。也许你的意思是:

SELECT *
FROM question
WHERE topic_name in (SELECT topic_name FROM topic WHERE subject_name = 'Maths')
ORDER BY question_id DESC LIMIT 3 ;

您的WHERE子句需要在ORDER BY子句之前:

SELECT * FROM question WHERE topic_name IN (SELECT topic_name FROM topic WHERE subject_name = 'Maths') ORDER BY question_id DESC LIMIT 3

指定哪列并将结果限制为一列,或改用IN运算符

SELECT * FROM question 
WHERE topic_name = (SELECT topic FROM topic WHERE subject_name = 'Maths')
ORDER BY question_id DESC LIMIT 1 

SELECT * FROM question 
WHERE topic_name in(SELECT topic FROM topic WHERE subject_name = 'Maths')
ORDER BY question_id DESC LIMIT 3 
事实上,这不是最好的建议。改为进行内部联接:

SELECT * FROM question q
INNER JOIN topic t 
ON q.topic_name = t.topic
WHERE subject_name = 'Maths'
ORDER BY question_id LIMIT 3 
如果您想保留=我更改了=以解决此问题,我可以在子查询中建议一个最小值、最大值或TOP 1吗