2012-01-27 9 views
0
にSQLiteのからINTERSECTを変換する方法

私は作品のSQLiteにクエリを書きましたが、今私は、MySQLでそれを使用する必要がありますが、私は、クエリがある 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 

そのLEFT JOINのINNER JOINを使ってみましたが、正しい結果が得られません。いくつかの提案はありますか?

+0

何か不足していますか?どちらのSELECT文も私と同じに見えます。これは、2番目の文(とINTERSECT)が重複していることを意味します。 – tzaman

+0

最初のSELECTステートメントのみを使用すると、結果が正しくないため、クエリは正しく書かれています –

+0

正確な方法は正確ですか? – tzaman

答えて

1

重複を削除するために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の引用符を削除する必要があります。

+0

しかし、MySQLでこのクエリを使用すると、列の年は空です。 MySQLで翻訳するためのアドバイスがありますか? –

+0

MySQLでは 'DISTINCT'がないとどうなりますか? – tzaman

+0

まだ空ですが、JOINを使用する必要があると思いますが、使用方法が分かりません –