我在以下 SQL 查询中遇到错误。我几乎肯定这是最后一行,但我不知道如何正确构建它。
SELECT * FROM listfinal
WHERE (CourseID IN (SELECT CourseID FROM listfinal WHERE CourseID ='A E200'))
AND (SELECT `Start Time`,`End Time` FROM listfinal WHERE `Days` LIKE ('%M%')) IN ((`Start Time` < 800 OR `Start Time` >= 1500) AND (`End Time` < 800 OR `End Time` >= 1500))
错误:
java.sql.SQLException: Operand should contain 2 column(s)
最佳答案
所以,你有这个:
SELECT * FROM listfinal
WHERE (CourseID IN (SELECT CourseID
FROM listfinal
WHERE CourseID ='A E200'))
到目前为止,一切都很好。但这没有意义:
AND (SELECT `Start Time`,`End Time`
FROM listfinal
WHERE `Days` LIKE '%M%')
因为你不能AND
子查询,这也没有意义:
IN ( (`Start Time` < 800 OR `Start Time` >= 1500)
AND (`End Time` < 800 OR `End Time` >= 1500) )
IN
运算符接受值列表作为参数。您没有给它一个值列表,而是给它一个 bool 表达式。你需要重新考虑这一点。我不知道你想完成什么,所以我不能确定你想做什么,但你可能正在寻找这样的东西:
AND (`Start Time` < 800 OR `Start Time` >= 1500)
AND (`End Time` < 800 OR `End Time` >= 1500)
关于MySQL 操作数应包含 2 列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42375775/