我向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的数据类型不是数字,如果它是整数而不是字符串,则需要删除45的引号。

关于mysql - 如何将INTERSECT从SQLite转换为MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9038877/

10-11 20:02