Sql server 如何在SQL Server中显示具有所有颜色代码的同一个人?
我有一个关于SQL Server的问题: 如何在与颜色表比较时获得具有相同或更多颜色代码的名称 颜色表中的所有颜色代码与名称相关的颜色代码匹配,然后显示该名称 示例:Sql server 如何在SQL Server中显示具有所有颜色代码的同一个人?,sql-server,Sql Server,我有一个关于SQL Server的问题: 如何在与颜色表比较时获得具有相同或更多颜色代码的名称 颜色表中的所有颜色代码与名称相关的颜色代码匹配,然后显示该名称 示例: personcolors带有name=tom的表格具有颜色代码红色、蓝色、绿色、棕色 颜色表格有颜色代码:红色、蓝色、绿色 因此,tom的所有3个颜色代码都匹配,然后显示他的名字 CREATE TABLE [dbo].[colors] ( [colorcode] [VARCHAR](50) NULL ) CREAT
带有personcolors
具有颜色代码name=tom的表格
红色、蓝色、绿色、棕色
表格有颜色代码:颜色
红色、蓝色、绿色
tom
的所有3个颜色代码都匹配,然后显示他的名字
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')
这里:与颜色表相关的所有颜色代码都用于tom的名称,因此我们需要显示此名称
和joe的名字类似,joe也有所有3种颜色代码,所以我们需要将这个名字显示为输出
另一个名字:Hari只有两个匹配的颜色代码,所以不需要显示他的名字
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')
纳尼只有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')
测试没有数学上的色码,所以不需要显示他的名字
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中完成此任务吗?让我们假设一个包含Mary和Lola的表,Mary有黄色和绿色,Lola有蓝色和红色。您希望在输出中使用什么名称?二者都为什么?我们假设一张桌子上有玛丽和萝拉,玛丽有黄色和绿色,萝拉有蓝色和红色。您希望在输出中使用什么名称?二者都为什么?这是关于如何有更多不同的颜色?