Mysql - 在一个输出中组合来自两个不同数据库的两个选择查询

时间:2015-11-29 14:09:22

标签: mysql

我对SQL的东西很新,而且我的情况是我没有足够的知识来实现​​以下目标。

我正在尝试将两个选择查询的结果组合在一起,但是一个查询来自一个数据库,另一个查询来自另一个数据库。两个数据库都在同一台服务器上。

如下所示:

在Database1上,我运行以下查询:

MariaDB [(none)]> select GENRE,STYLE,CONTENT_ID,PROMO_END_DATE from Database1.PROMOTION_LIST ;
+-----------+---------------------------------------+-------------------------+----------------------+
| GENRE     | STYLE                                 | CONTENT_ID              |PROMO_END_DATE        |
+-----------+---------------------------------------+-------------------------+----------------------+
| ROCK      |Hard Rock,Opera Rock, Syphonic Rock    | 11111,22222,33333       | 2015-12-02 04:00:00  |
| METAL     |Black Metal, Death Metal, Heavy Metal  | 55555,66666,77777,22222 | 2015-12-29 11:00:00  |
| ELECTRO   |Dance, Tance, Flash House              | 88888,22222,66666,44444 | 2015-12-02 07:00:00  |
+-----------+-------------+---------------------------------------------------+----------------------+

在Database2上,我运行以下查询:

SELECT SONG_ID,SONG_NAME,ARTIST FROM Database2.song_master_table

+---------+---------------+---------+
| SONG_ID | SONG_NAME     | ARTIST  |
+---------+---------------+---------+
| 11111   | SONG1         | BAND1   |
| 22222   | SONG2         | SINGER1 |
| 33333   | SONG3         | ARTIST1 |
| 44444   | SONG4         | BAND2   |
| 55555   | SONG5         | SINGER2 |
| 66666   | SONG6         | ARTIST2 |
| 77777   | SONG7         | BAND2   |
| 88888   | SONG8         | SINGER2 |
+---------+---------------+---------+

我想要实现的输出是:

+-----------+---------------------------------------+-------------------------+--------------+---------------+--------------------+
| GENRE     | STYLE                                 | CONTENT_ID              |     ARTIST   | SONG_NAME     | PROMO_END_DATE     |
+-----------+---------------------------------------+-------------------------+--------------+---------------+--------------------+
| ROCK      |Hard Rock,Opera Rock, Syphonic Rock    | 11111                   | BAND1        | SONG1         | 2015-12-02 04:00:0 |
|           |                                       | 22222                   | SINGER1      | SONG2         | 2015-12-02 04:00:0 |
|           |                                       | 33333                   | ARTIST1      | SONG3         | 2015-12-02 04:00:0 |
| METAL     |Black Metal, Death Metal, Heavy Metal  | 55555                   | SINGER2      | SONG5         | 2015-12-02 04:00:0 |
|           |                                       | 66666                   | ARTIST2      | SONG6         | 2015-12-02 04:00:0 |
|           |                                       | 77777                   | BAND2        | SONG7         | 2015-12-02 04:00:0 |
|           |                                       | 22222                   | SINGER1      | SONG2         | 2015-12-02 04:00:0 |
|           |                                       | 33333                   | ARTIST1      | SONG3         | 2015-12-02 04:00:0 |
| ELECTRO   |Dance, Tance, Flash House              | 88888                   | SINGER2      | SONG8         | 2015-12-02 04:00:0 |
|           |                                       | 22222                   | SINGER1      | SONG2         | 2015-12-02 04:00:0 |
|           |                                       | 66666                   | ARTIST2      | SONG6         | 2015-12-02 04:00:0 |
|           |                                       | 44444                   | BAND2        | SONG4         | 2015-12-02 04:00:0 |
+-----------+---------------------------------------+-------------------------+--------------+---------------+--------------------+

我尝试使用join和union,但语法不正确。

考虑一下:

Database1,CONTENT_ID和Database2 SONG_ID是相同的信息。我不确定是否可能,但输出需要按照CONTENT_ID表对artist / song_name进行分组。而且没有任何条件。

我感谢所有人和任何帮助。

先谢谢。

1 个答案:

答案 0 :(得分:0)

将列id添加到Database1.PROMOTION_LIST,然后创建另一个表格,将idSONG_ID连接起来:

promo_id   song_id
1           11111
1           22222
1           33333
2           55555
...

然后,创建所需的查询会更容易。

如果您需要进一步的帮助,请告诉我。