[英]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.