繁体   English   中英

无法找出mysql查询中的错误

[英]Can't figure out the error in the mysql query

我现在尝试了一个小时,但仍然无法弄清楚此查询中的问题。 :/

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

这是错误:

1064-您的SQL语法有误; 在第1行的'WHERE topic_name =(SELECT * FROM topic WHERE subject_name ='Maths')'附近检查与您的MySQL服务器版本相对应的手册以使用正确的语法

您的陈述全乱了。 正确的声明是:

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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM