Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有自我排斥的群_CONCAT_Mysql - Fatal编程技术网

Mysql 具有自我排斥的群_CONCAT

Mysql 具有自我排斥的群_CONCAT,mysql,Mysql,也许我缺少一些逻辑或者一种简单的方法 有一个带有颜色的表,有些表可能有0、1、2、3或更多与相同colorHue中的其他颜色相匹配的颜色 id colorName colorHue ColorNumber ---------------------------------------------------- 1 Orange Og 1000 2 Pumpkin Og 1000 3 Red Rd

也许我缺少一些逻辑或者一种简单的方法

有一个带有颜色的表,有些表可能有0、1、2、3或更多与相同
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