我向SQLite写了一个有效的查询,但现在我必须在MySQL中使用它,但无法转换INTERSECT
查询是:
SELECT year FROM Movie,Rating
WHERE Movie.mID=Rating.mID AND (stars='4' OR stars='5')
INTERSECT
SELECT year FROM Movie,Rating WHERE Movie.mID=Rating.mID AND (stars='4' OR stars='5')
ORDER BY year ASC
我尝试使用左联接的INNER JOIN,但没有得到正确的结果。我可以提出一些建议吗?
最佳答案
看起来您只是在使用INTERSECT
语句删除重复项。有一种简单得多的方法,即SELECT DISTINCT
:
SELECT DISTINCT year FROM Movie, Rating
WHERE Movie.mID=Rating.mID AND (stars='4' OR stars='5')
ORDER BY year ASC
如果这不起作用,请尝试直接表达联接,而不要在
WHERE
子句中表达:SELECT DISTINCT year
FROM Movie NATURAL JOIN Rating ON mID
WHERE (stars='4' OR stars='5')
ORDER BY year ASC
另外,请确保
stars
的数据类型不是数字,如果它是整数而不是字符串,则需要删除4
和5
的引号。关于mysql - 如何将INTERSECT从SQLite转换为MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9038877/