我对SQL Server有疑问:
与颜色表进行比较时如何获得具有相同颜色代码或更多颜色的名称
颜色表中的所有颜色代码与名称相关的颜色代码匹配,然后显示该名称
示例:
persioncolores
的name = tom
表的颜色代码为red,blue,green,brown
Color
表具有颜色代码:Red,blue,green
因此tom
的所有3个颜色代码都匹配,然后显示他的名字
在这里:与颜色表相关的所有颜色代码都具有tom的名称,因此我们需要显示该名称
类似于joe的名称也具有所有3种颜色代码,因此我们需要将此名称显示为输出
另一个名字:Hari只有两个匹配的颜色代码,因此无需显示他的名字
nani只有1个匹配的颜色代码,因此无需显示他的名字
测试没有经过颜色编码的颜色,因此无需显示他的名字
CREATE TABLE [dbo].[colors]
(
[colorcode] [VARCHAR](50) NULL
)
CREATE TABLE [dbo].[PersionColors]
(
[Name] [VARCHAR](50) NULL,
[ColorCode] [VARCHAR](50) NULL
)
INSERT INTO [dbo].[colors] ([colorcode])
VALUES (N'Red'), (N'Blue'), (N'Green')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Tom', N'Red'), (N'Tom', N'Blue'), (N'Tom', N'Green'), (N'Tom', N'Brown')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Joe', N'Red'), (N'Joe', N'Blue'), (N'Joe', N'Green')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Hari', N'Red'), (N'Hari', N'Blue')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Nani', N'Blue')
GO
INSERT INTO [dbo].[PersionColors] ([Name], [ColorCode])
VALUES (N'Test', N'Orange')
基于以上数据,我想要这样输出:
Name
------
Tom
Joe
我尝试了此SQL:
select distinct
name, a.colorcode
from
[dbo].[PersionColors] a
join
colors b on a.ColorCode = b.colorcode
where
a.ColorCode = 'red' or a.colorcode = 'blue' or a.colorcode = 'green'
此查询未返回预期结果。
能否请您告诉我如何在SQL Server中完成此任务?