我是3张表 1个视图相关联
结构如下
BBS_Sendnote 表:
CREATE TABLE [dbo].[BBS_Sendnote](
[SendnoteID] [int] IDENTITY(1,1) NOT NULL,
[SendnoteName] [varchar](200) COLLATE Chinese_PRC_CI_AS NULL,
[NoteContent] [text] COLLATE Chinese_PRC_CI_AS NOT NULL,
[Writer] [int] NULL,
[Createdata] [datetime] NULL CONSTRAINT [DF_BBS_Sendnote_Createdata]  DEFAULT (getdate()),
[SmallClassID] [int] NULL,
[TypeID] [int] NULL CONSTRAINT [DF_BBS_Sendnote_TypeID]  DEFAULT ((1)),
[ImgType] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_BBS_Sendnote_ImgType]  DEFAULT (''),
[StateID] [int] NULL CONSTRAINT [DF_BBS_Sendnote_StateID]  DEFAULT ((1)),
[NoteOrder] [int] NULL CONSTRAINT [DF_BBS_Sendnote_NoteOrder]  DEFAULT ((0)),
[LastBackUserID] [int] NULL CONSTRAINT [DF_BBS_Sendnote_LastBackUserID]  DEFAULT ((0)),
[LastBackUserDate] [datetime] NULL CONSTRAINT [DF_BBS_Sendnote_LastBackUserDate]  DEFAULT (getdate()),
[Scannum] [int] NULL CONSTRAINT [DF_BBS_Sendnote_Scannum]  DEFAULT ((0)),
[Recenum] [int] NULL CONSTRAINT [DF_BBS_Sendnote_Recenum]  DEFAULT ((0))

BBS_Res 表:
CREATE TABLE [dbo].[BBS_Res](
[ResID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[Time] [datetime] NOT NULL CONSTRAINT [DF_BBS_Res_Time]  DEFAULT (getdate()),
[ResName] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[ResRoot] [varchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL,
[PostID] [int] NOT NULL,
[LoadCount] [int] NULL CONSTRAINT [DF_BBS_Res_LoadCount]  DEFAULT ((0)))
BBS_PostType 表:
CREATE TABLE [dbo].[BBS_PostType](
[PostTypeID] [int] IDENTITY(1,1) NOT NULL,
[PostTypeName] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[PostTypeMenuSmallId] [int] NULL CONSTRAINT [DF_Bbs_PostType_PostType_MenuBigId]  DEFAULT ((0)),
[PostTypeAdddate] [datetime] NULL CONSTRAINT [DF_Bbs_PostType_PostType_Adddate]  DEFAULT (getdate()))
一个视图表
太多了 就写用到的几列吧
BBSI, UserName,Email
我用链接的语句将上面的几个表和视图链接起来
出现 一条记录出现2次,而且是一样的。链接语句是:SELECT     dbo.BBS_Sendnote.SendnoteID, dbo.BBS_Sendnote.SendnoteName, dbo.BBS_Sendnote.NoteContent, dbo.BBS_Sendnote.Writer,  dbo.V_Bbs_UserDetail.UserName, dbo.V_Bbs_UserDetail.Email, dbo.V_Bbs_UserDetail.CreateDate, dbo.V_Bbs_UserDetail.Sex,  dbo.V_Bbs_UserDetail.BornTime, dbo.V_Bbs_UserDetail.Address,dbo.V_Bbs_UserDetail.QICQ,dbo.V_Bbs_UserDetail.FaceImg,dbo.V_Bbs_UserDetail.PersonSign, dbo.V_Bbs_UserDetail.SendNum, dbo.V_Bbs_UserDetail.ReceiveNum, dbo.V_Bbs_UserDetail.ClassicCount, dbo.V_Bbs_UserDetail.Mark, dbo.V_Bbs_UserDetail.LevelName, dbo.V_Bbs_UserDetail.Img, dbo.BBS_Sendnote.Createdata, dbo.BBS_Sendnote.SmallClassID, dbo.BBS_Sendnote.TypeID, dbo.BBS_PostType.PostTypeName, dbo.BBS_Sendnote.Scannum,    dbo.BBS_Res.ResName, dbo.BBS_Res.LoadCount, dbo.BBS_Res.ResRoot, dbo.BBS_Res.ResID
FROM         dbo.BBS_Sendnote LEFT OUTER JOIN dbo.BBS_Res ON dbo.BBS_Sendnote.SendnoteID = dbo.BBS_Res.PostID LEFT OUTER JOIN dbo.BBS_PostType ON dbo.BBS_Sendnote.TypeID = dbo.BBS_PostType.PostTypeID LEFT OUTER JOIN
 dbo.V_Bbs_UserDetail ON dbo.BBS_Sendnote.Writer = dbo.V_Bbs_UserDetail.BBSID
这个是怎么回事?谢谢!

解决方案 »

  1.   

    SELECT 后加 DISTINCT 
      

  2.   

    SELECT  distinct  dbo.BBS_Sendnote.SendnoteID, dbo.BBS_Sendnote.SendnoteName, dbo.BBS_Sendnote.NoteContent, dbo.BBS_Sendnote.Writer,  dbo.V_Bbs_UserDetail.UserName, dbo.V_Bbs_UserDetail.Email, dbo.V_Bbs_UserDetail.CreateDate, dbo.V_Bbs_UserDetail.Sex,  dbo.V_Bbs_UserDetail.BornTime, dbo.V_Bbs_UserDetail.Address,dbo.V_Bbs_UserDetail.QICQ,dbo.V_Bbs_UserDetail.FaceImg,dbo.V_Bbs_UserDetail.PersonSign, dbo.V_Bbs_UserDetail.SendNum, dbo.V_Bbs_UserDetail.ReceiveNum, dbo.V_Bbs_UserDetail.ClassicCount, dbo.V_Bbs_UserDetail.Mark, dbo.V_Bbs_UserDetail.LevelName, dbo.V_Bbs_UserDetail.Img, dbo.BBS_Sendnote.Createdata, dbo.BBS_Sendnote.SmallClassID, dbo.BBS_Sendnote.TypeID, dbo.BBS_PostType.PostTypeName, dbo.BBS_Sendnote.Scannum,    dbo.BBS_Res.ResName, dbo.BBS_Res.LoadCount, dbo.BBS_Res.ResRoot, dbo.BBS_Res.ResID 
    FROM        dbo.BBS_Sendnote LEFT OUTER JOIN dbo.BBS_Res ON dbo.BBS_Sendnote.SendnoteID = dbo.BBS_Res.PostID LEFT OUTER JOIN dbo.BBS_PostType ON dbo.BBS_Sendnote.TypeID = dbo.BBS_PostType.PostTypeID LEFT OUTER JOIN 
    dbo.V_Bbs_UserDetail ON dbo.BBS_Sendnote.Writer = dbo.V_Bbs_UserDetail.BBSID 
      

  3.   

    SELECT A LEFT OUTER JOIN B ON A.ID = B.ID 
    如果 A.ID在B表中B.ID对应有两条记录,那么就会出现重复的。   
      

  4.   

    SELECT distinct  ......
      

  5.   


    加 distinct ...