当我想显示来自多个数据库的数据时,我遇到了问题。它给出了重复的值。
所以我在同一台服务器上有三个数据库。它们具有相同的表结构。 所以这是我的疑问:
Query = 'SELECT id_movie, movie_tittle
FROM (SELECT id_movie, movie_tittle, status from margoplatinum.movie
UNION
SELECT id_movie, movie_tittle, status from detos21.movie
UNION
SELECT id_movie, movie_tittle, status from plaza21.movie) AS a
WHERE a.status = "Now Playing"'
它可以工作但是给出了这样的重复值:
id_movies | movie_tittle
------------------------------------------
2 | THOR 2
1 | Gravity
3 | THOR 2
1 | The Legend of Hercules
4 | Gravity
所以我把DISTINCT
条款放在这样:
Query = 'SELECT id_movie, DISTINCT (movie_tittle)
FROM (SELECT id_movie, movie_tittle, status from margoplatinum.movie
UNION
SELECT id_movie, movie_tittle, status from detos21.movie
UNION
SELECT id_movie, movie_tittle, status from plaza21.movie) AS a
WHERE a.status = "Now Playing"'
但上面的查询不起作用。它有一条错误消息:
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'DISTINCT (movie_tittle)
FROM (SELECT id_movie, movie_tittle, status from mar' at line 1
那么如何从多个数据库中编写SELECT DISTINCT?
你的任何帮助都会非常有帮助:) 谢谢
答案 0 :(得分:3)
这是您的查询:
SELECT id_movie, movie_tittle
FROM (SELECT id_movie, movie_tittle, status from margoplatinum.movie
UNION
SELECT id_movie, movie_tittle, status from detos21.movie
UNION
SELECT id_movie, movie_tittle, status from plaza21.movie
) a
WHERE a.status = 'Now Playing'
不返回重复项。您在选择中有id_movie
,在每个表中显然都是不同的。
删除id_movie
,它将返回没有重复项的电影名称:
SELECT movie_title
FROM (SELECT movie_title, status from margoplatinum.movie
UNION
SELECT movie_title, status from detos21.movie
UNION
SELECT movie_title, status from plaza21.movie
) a
WHERE a.status = 'Now Playing';
此外,从关系数据库的角度来看,为每个影院存储电影是个坏主意。您应该将所有电影存储在一张桌子中,以及他们正在播放的电影院。
答案 1 :(得分:0)
试试这个
SELECT DISTINCT movie_tittle, id_movie
FROM
(SELECT
id_movie, movie_tittle, status
from
margoplatinum.movie UNION SELECT
id_movie, movie_tittle, status
from
detos21.movie UNION SELECT
id_movie, movie_tittle, status
from
plaza21.movie) AS a
WHERE
a.status = 'Now Playing';