我有一张名为'艺术家'列 - id
,name
,genre
我需要找出所有具有相同类型的艺术家。
以下是一个例子:如果艺术家X有流派'摇滚'和'经典',艺术家Y有流派'经典'和'流行',艺术家Z有流派'pop',然后样本输出如下:
first artist | second artist | genre
X | Y | Classic
Y | Z | Pop
答案 0 :(得分:0)
根据您的样本输出判断,您尝试做两件事。首先,订购您的数据集,然后“转动”它,以便数据中的某些列成为行。
第一部分:
SELECT name, genre
FROM artist
ORDER BY genre
第二部分是演讲。有很多方法可以做到这一点。例如,你可以试试这个。
SELECT GROUP_CONCAT(name ORDER BY name) AS names,
genre
FROM artist
GROUP BY genre
ORDER BY genre
或者您可以在MySQL中查找各种技术来进行旋转。提示:他们都很难。
或者,您可以在演示文稿软件中执行此操作。
答案 1 :(得分:0)
排除"镜像重复" (XY-Classic vs YX-Classic)和循环( ZZ-Pop)使用S.id< J.id条件:
Select S.Name as FirstArtist,
J.Name as SecondArtist,
S.Genre as CommonGenre
From Artist S
Inner Join Artist J
ON S.Genre = J.Genre and S.id < J.id