首页 > 解决方案 > Mysql在一行中从同一张表中获取不同的值

问题描述

如果不清楚,请更正标题,不幸的是我的英语不完美,我不知道如何用一句话来解释我的问题。

我有一张歌曲表和一位艺术家,这是歌曲表:

|-----------------------------|
| id  | title | artist | date |
|-----------------------------|
| 1   | song1 | 1      | unix |
|-----------------------------|
| 2   | song2 | 1      | unix |
|-----------------------------|
| 3   | song3 | 2      | unix |
|-----------------------------|
| 4   | song4 | 3      | unix |
|-----------------------------|

这是艺术家表

|----------------------|
| id  | name    | date |
|----------------------|
| 1   | artist1 | unix |
|----------------------|
| 2   | artist2 | unix |
|----------------------|
| 3   | artist3 | unix |
|----------------------|

我想获得 10 首随机歌曲和其他 3 首歌曲名称的列表。我想做一个测验,用户听一首歌并且必须猜出标题,所以我需要 4 个可能的答案,正确的和 3 个磨损的标题。所以结果一定是这样的:

|-------------------------------------------------------------------------|
| id  | title | artist_id | artist_name | date | wrong1 | wrong2 | wrong3 |
|-------------------------------------------------------------------------|
| 1   | song1 | 1         | artist1     | unix | song2  | song3  | song4  |
|-------------------------------------------------------------------------|

我怎样才能做到这一点?非常感谢,如果您需要其他信息,请告诉我。

标签: mysqlsqlselect

解决方案


我建议您使用两个查询。一个人应该返回正确的歌曲。

|--------------------------------------------------|
| id  | title | artist_id | artist_name | date |   |
|--------------------------------------------------|
| 1   | song1 | 1         | artist1     | unix |   |
|--------------------------------------------------|

另一个可以返回三首随机歌曲

SELECT * FROM table_name
ORDER BY RAND()
LIMIT 3;

|--------------------------------------------------|
| id  | title | artist_id | artist_name | date |   |
|--------------------------------------------------|
| 2   | song2 | 2         | artist2     | unix |   |
| 3   | song3 | 3         | artist3     | unix |   |
| 4   | song4 | 4         | artist4     | unix |   |
|--------------------------------------------------|

然后你可以把这四个记录放在你的代码中。


推荐阅读