我有这些表:重复数据,显示空白代替
CREATE TABLE [dbo].[Books] (
[id] int IDENTITY(1, 1) NOT NULL
, [Title] varchar(1000) NOT NULL
, [Publisher] varchar(1000) NULL
, [ISBN] varchar(50) NULL
, [Pages] int NULL
, [Date] date NULL
, [Plot_Summary] varchar(MAX) NULL)
ON [PRIMARY]
CREATE TABLE [dbo].[Characters] (
[id] int IDENTITY(1, 1) NOT NULL
, [Name] varchar(1000) NOT NULL)
ON [PRIMARY]
CREATE TABLE [dbo].[Book_Char] (
[id] int IDENTITY(1, 1) NOT NULL
, [Book_id] int NOT NULL
, [Char_id] int NOT NULL)
ON [PRIMARY]
当我使用此查询:
SELECT b.title AS Title
, c.[Name] AS Char_Name
, b.Plot_Summary AS Summary
FROM Books b
INNER JOIN Book_Char bc ON b.id = bc.Book_id
INNER JOIN Characters c ON c.id = bc.Char_id
自然,我得到这样的结果:
Title Char_Name Summary
---------------------------
title1 Name1 Summary1
title1 Name2 Summary1
title1 Name3 Summary1
title2 Name1a Summary2
title2 Name2a Summary2
title2 Name3a Summary2
我想要的是:
Title Char_Name Summary
---------------------------
title1 Name1 Summary1
Name2
Name3
title2 Name1a Summary2
Name2a
Name3a
我在工会的尝试:
SELECT '' AS Title
, c.[Name] AS Char_Name
, '' AS Summary
FROM Books b
INNER JOIN Book_Char bc ON b.id = bc.Book_id
INNER JOIN Characters c ON c.id = bc.Char_id
UNION
SELECT b.title
, ''
, b.Plot_Summary
FROM Books b
INNER JOIN Book_Char bc ON b.id = bc.Book_id
INNER JOIN Characters c ON c.id = bc.Char_id
给出:
Title Char_Name Summary
---------------------------
Name1
Name1a
Name2
Name2a
Name3
Name3a
title1 Summary1
title2 Summary2
我是新来的工会,而我甚至不知道这是否是这里的正确答案。我需要明白这一点;我不只是在寻找codez。我该怎么做,它是如何工作的?
哦,我的,那工作。正是我想要的。是的,我忘记了'ORDER BY'语句,我在蟾蜍的查询中已经有了它。我只是在复制时没有抓住它。我从来没有用过''。我用过分区,不敢相信我不记得那个。我猜,太关注'UNION'了。我必须去研究这个。 “seqnum”从哪里来?谢谢你! – pixelmeow 2014-10-26 14:56:17
我是盲人。我看到seqnum。没关系那部分。 – pixelmeow 2014-10-26 15:02:26