我开发的系统中有两个数据表,其中一个为tbBuy,数据库结构如下:
CREATE TABLE [tbBuy] (
[bciId] [int] NOT NULL ,
[cciId] [int] NOT NULL ,
[bcvcName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[bcdtReNewTime] [smalldatetime] NULL ,
[bciValidTime] [int] NULL ,
[bcvcMainDetails] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[bcvcProSize] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[bcvcPriceDetails] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[bcvcProNum] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[bcvcBdetails] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[bciMainId] [int] NOT NULL ,
[handled] [bit] NULL CONSTRAINT [DF_tbBuy_handled] DEFAULT (0),
[class_changed] [bit] NULL CONSTRAINT [DF_tbBuy_class_changed] DEFAULT (0)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
另一个为tbCompany,数据库结构如下:
CREATE TABLE [tbCompany] (
[cciId] [int] NOT NULL ,
[cciMainId] [int] NULL ,
[ccdtRenewTime] [smalldatetime] NULL ,
[ccvcName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[ccvcMainProduct] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[cciProperty] [int] NULL ,
[ccvcMan] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cciMode] [int] NULL ,
[ccvcRegAddr] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cciRegFunds] [int] NULL ,
[ccvcEstTime] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cciPeople] [int] NULL ,
[ccvcProMonth] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cciSalesAmount] [int] NULL ,
[cciExportAmount] [int] NULL ,
[ccvcManageFlag] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcSalesAddr] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccdtJoinTime] [smalldatetime] NULL ,
[ccvCustomer] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
[cciStudyNum] [int] NULL ,
[ccvcArea] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cccOEMFlag] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcBank] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcBankNo] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcSalesMarket] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcLinkMan] [nvarchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,
[cccSex] [nvarchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcJob] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[cciProvince] [int] NULL ,
[ccvcCity] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcAddr] [nvarchar] (150) COLLATE Chinese_PRC_CI_AS NULL ,
[cccPostCode] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcTel] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcFax] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcMobile] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcMessager] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcEmail] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcHomePage] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcDesc] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
[ccvcOtherDesc] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

解决方案 »

  1.   

    我在数据中运行以下SQL语句,搜索的结果中存在大量原因不明的重复数据项:
    select buy.bciID,buy.bcvcName,company.cciProvince,buy.bcvcMainDetails,company.ccvcLinkMan,
    company.ccvcEmail,company.ccvcMessager,company.ccvcAddr,company.ccvcTel,buy.bcdtReNewTime,
    company.ccvccity,buy.bciMainId,company.ccvcMobile,company.ccvcfax from tbBuy buy,tbCompany company 
    where buy.cciID = company.cciID and buy.handled =0
    运行结果如下(部分):
    423075 紧急求购木工设备 9
    531264 紧急求购专色油墨 19
    531264 紧急求购专色油墨 19
    136004 求购石油树脂 11
    413784 求购PSP/PS2硅胶套,皮套 19
    504281 求购带漏电保护开关 10
    504281 求购带漏电保护开关 10
    504281 求购带漏电保护开关 10
    536570 寻求五金件加工 3
    536570 寻求五金件加工 3
    我尝试使用distinct去除重复的数据项,可得到错误信息如下:
    服务器: 消息 8163,级别 16,状态 3,行 1
    不能以 DISTINCT 方式选择 text、ntext 或 image 数据类型。我使用的服务器版本为MS SQL Server 2000不知如何解决,请高手帮忙,谢谢!
      

  2.   

    --简单一点的处理方法:
    select distinct
    buy.bciID,
    buy.bcvcName,
    company.cciProvince,
    convert(varchar(8000),buy.bcvcMainDetails),
    company.ccvcLinkMan,
    company.ccvcEmail,
    company.ccvcMessager,
    company.ccvcAddr,
    company.ccvcTel,
    buy.bcdtReNewTime,
    company.ccvccity,
    buy.bciMainId,
    company.ccvcMobile,
    company.ccvcfax 
    from tbBuy buy,tbCompany company 
    where buy.cciID = company.cciID and buy.handled =0
      

  3.   

    select distinct
    buy.bciID,
    buy.bcvcName,
    company.cciProvince,
    convert(varchar(8000),buy.bcvcMainDetails) bcvcMainDetails,
    company.ccvcLinkMan,
    company.ccvcEmail,
    company.ccvcMessager,
    company.ccvcAddr,
    company.ccvcTel,
    buy.bcdtReNewTime,
    company.ccvccity,
    buy.bciMainId,
    company.ccvcMobile,
    company.ccvcfax 
    from tbBuy buy,tbCompany company 
    where buy.cciID = company.cciID and buy.handled =0
    zlp321002() 为正解,多谢!