在同一个表的列中组织类似的项目

时间:2014-01-07 14:07:34

标签: mysql sql

我有一张名为'艺术家'列 - idnamegenre

我需要找出所有具有相同类型的艺术家。

以下是一个例子:如果艺术家X有流派'摇滚'和'经典',艺术家Y有流派'经典'和'流行',艺术家Z有流派'pop',然后样本输出如下:

first artist | second artist  | genre
X            | Y              | Classic
Y            | Z              | Pop

2 个答案:

答案 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)

  1. 使用流派加入数据
  2. 排除"镜像重复" (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