2017-07-30 44 views
-1

SQL Fiddle这里的表是我的全部代码:顺序的列是在另一个表在MySQL

DROP TABLE tmdb_movies; 
CREATE TABLE tmdb_movies (
    tmdb_id INTEGER NOT NULL PRIMARY KEY, 
    movie_title TEXT NOT NULL, 
    popularity INTEGER NOT NULL 
); 


INSERT INTO tmdb_movies (tmdb_id, movie_title, popularity) VALUES 
(1, 'Logan', '88.4'), 
(2, 'Iron Man', '74.3'), 
(3, 'SuperMan', '102.56'); 

DROP TABLE genres; 
CREATE TABLE genres (
    tmdb_id INTEGER NOT NULL, 
    genres_name TEXT NOT NULL 
); 

INSERT INTO genres (tmdb_id, genres_name) VALUES 
(1, 'Crime'), 
(1, 'Comedy'), 
(1, 'Drama'), 
(2, 'Action'), 
(2, 'Horror'), 
(2, 'Documentary'), 
(3, 'Music'); 


SELECT distinct genres.tmdb_id 

FROM genres 

JOIN tmdb_movies USING (tmdb_id) 

ORDER BY tmdb_movies.popularity DESC 

什么,我在这里做的是:我想popularitytmdb_movies表排序表。

SQL查询在[SQL Fiddle][1]

工作完全正常不过,我得到这个错误,当我在我的MySQL运行

3065 - 表达#1 ORDER BY子句中不在SELECT列表中,引用列'DB.tmdb_movies.popularity'不在SELECT列表中;这与DISTINCT不兼容

这可能是由于我的默认SQL模式。我需要改变模式吗?无论如何要做到这一点,而不改变模式,因为我认为默认模式会更好?

+0

你正在使用哪个版本的mysql? – scaisEdge

回答

1

是否有一个特定的原因,您不想将热门程度添加到选择?

SELECT distinct genres.tmdb_id, tmdb_movies.popularity FROM genres JOIN tmdb_movies USING (tmdb_id) ORDER BY tmdb_movies.popularity DESC

+0

我只是不知道,我可以做到这一点......非常感谢 –

+0

嘿,我听说'distinct'减慢了速度,我可以使用其他东西吗? –

+0

这并不完全清楚查询的目的是什么。只需从电影表中选择并订购结果即可获得相同的结果。 'SELECT tmdb_id, FROM tmdb_movies ORDER BY受欢迎度DESC' – neil

相关问题