Mysql 具有自我排斥的群_CONCAT
也许我缺少一些逻辑或者一种简单的方法 有一个带有颜色的表,有些表可能有0、1、2、3或更多与相同Mysql 具有自我排斥的群_CONCAT,mysql,Mysql,也许我缺少一些逻辑或者一种简单的方法 有一个带有颜色的表,有些表可能有0、1、2、3或更多与相同colorHue中的其他颜色相匹配的颜色 id colorName colorHue ColorNumber ---------------------------------------------------- 1 Orange Og 1000 2 Pumpkin Og 1000 3 Red Rd
colorHue中的其他颜色相匹配的颜色
id colorName colorHue ColorNumber
----------------------------------------------------
1 Orange Og 1000
2 Pumpkin Og 1000
3 Red Rd 1001
4 Brick Rd 1001
5 Carrot Og 1000
6 Blue Blue 1002
7 Scarlet Rd 1001
我需要一个视图
,包含列出的所有颜色和其他可能的颜色,但不显示当前行的颜色名称
id colorName Other Colors
----------------------------------------------------
1 Orange Pumpkin,Carrot
2 Pumpkin Orange,Carrot
3 Red Brick,Scarlet
4 Brick Red,Scarlet
5 Carrot Orange,Pumpkin
6 Blue
7 Scarlet Red,Brick
我可以很容易地得到所有行的组\u CONCAT
,但无法找出如何消除对当前行的自引用。所以我得到这个:
id colorName Other Colors
----------------------------------------------------
1 Orange Orange,Pumpkin,Carrot
2 Pumpkin Orange,Pumpkin,Carrot
3 Red Red,Brick,Scarlet
4 Brick Red,Brick,Scarlet
5 Carrot Orange,Pumpkin,Carrot
6 Blue Blue
7 Scarlet Red,Brick,Scarlet
更新
更新
更新
更新
感谢您的快速回答,但这并没有输出列表。另外,如果颜色色调不是一种颜色的名称,而是一个缩写呢?组织、研发、B、Gr等。你所说的不输出列表是什么意思?你去看小提琴了吗?是的。我想对我需要的东西的简单解释太简单了。将colorHue值更改为O表示橙色,R表示红色,B表示蓝色,然后查看结果。我需要上面表2所示的输出。每种颜色,都有备选颜色,但不是实际颜色。我的查询就是这样做的。提供你的数据来讨论或解释你的问题正如我所说的,我不应该让它这么简单。颜色色调不是一种颜色,而是一种代码。感谢您的快速回答,但这并没有输出列表。另外,如果颜色色调不是一种颜色的名称,而是一个缩写呢?组织、研发、B、Gr等。你所说的不输出列表是什么意思?你去看小提琴了吗?是的。我想对我需要的东西的简单解释太简单了。将colorHue值更改为O表示橙色,R表示红色,B表示蓝色,然后查看结果。我需要上面表2所示的输出。每种颜色,都有备选颜色,但不是实际颜色。我的查询就是这样做的。提供你的数据来讨论或解释你的问题正如我所说的,我不应该让它这么简单。颜色色调不是一种颜色,而是一种代码。感谢您的快速回答,但这并没有输出列表。另外,如果颜色色调不是一种颜色的名称,而是一个缩写呢?组织、研发、B、Gr等。你所说的不输出列表是什么意思?你去看小提琴了吗?是的。我想对我需要的东西的简单解释太简单了。将colorHue值更改为O表示橙色,R表示红色,B表示蓝色,然后查看结果。我需要上面表2所示的输出。每种颜色,都有备选颜色,但不是实际颜色。我的查询就是这样做的。提供你的数据来讨论或解释你的问题正如我所说的,我不应该让它这么简单。颜色色调不是一种颜色,而是一种代码。感谢您的快速回答,但这并没有输出列表。另外,如果颜色色调不是一种颜色的名称,而是一个缩写呢?组织、研发、B、Gr等。你所说的不输出列表是什么意思?你去看小提琴了吗?是的。我想对我需要的东西的简单解释太简单了。将colorHue值更改为O表示橙色,R表示红色,B表示蓝色,然后查看结果。我需要上面表2所示的输出。每种颜色,都有备选颜色,但不是实际颜色。我的查询就是这样做的。提供你的数据来讨论或解释你的问题正如我所说的,我不应该让它这么简单。颜色色调不是一种颜色,而是一种代码。那么什么条件可以从第一行的列表中排除Orange
!我看,我想我已经知道你的目标了。那么什么条件可以把Orange
从第一行的列表中排除呢?哦!我看,我想我已经知道你的目标了。那么什么条件可以把Orange
从第一行的列表中排除呢?哦!我看,我想我已经知道你的目标了。那么什么条件可以把Orange
从第一行的列表中排除呢?哦!我想我已经实现了你的目标
SELECT colorHue,
GROUP_CONCAT(IF(colorHue=colorName,null,colorName))
FROM colors
GROUP BY colorHue
SELECT c.*,
GROUP_CONCAT(c1.colorName)
FROM colors c
LEFT JOIN colors c1
ON c.colorHue = c1.colorHue
AND c.id != c1.id
GROUP BY c.id