基于三列唯一ID从sql中删除不需要的行
这是密码。我在做一些愚蠢的事情-那是什么?我得到的只是语法错误基于三列唯一ID从sql中删除不需要的行,sql,nested,distinct,sql-delete,Sql,Nested,Distinct,Sql Delete,这是密码。我在做一些愚蠢的事情-那是什么?我得到的只是语法错误 select code, shortDescription, longDescription, fullDescripton, codeType, useThruDate, updateDate, updateComment, createDate into #irish from (select distinct code, shortDescription, longD
select
code, shortDescription, longDescription, fullDescripton,
codeType, useThruDate, updateDate, updateComment, createDate
into
#irish
from
(select distinct
code, shortDescription, longDescription
when count(code + shortDescription + longDescription) > 1
then delete from #irish where useThruDate <> '2016-30-06'
else 0
)
from [dbo].[irish]
我相信这就是你的目标:
/* Creates #irish table */
CREATE TABLE #irish (
code NVARCHAR(MAX)
,shortdescription NVARCHAR(MAX)
,longdescription NVARCHAR(MAX)
,fulldescription NVARCHAR(MAX)
,codeType NVARCHAR(MAX)
,useThruDate NVARCHAR(MAX)
,updateDate NVARCHAR(MAX)
,updateComment NVARCHAR(MAX)
,createDate NVARCHAR(MAX)
/* insert select into #irish table */
INSERT INTO #irish
SELECT DISTINCT
Code,ShortDescription,LongDescription, fullDescripton,
codeType, useThruDate, updateDate, updateComment, createDate
FROM dbo.irish
WHERE
useThruDate <> '2016-30-06'
/* My best understanding of your count critera */
AND (code IS NOT NULL
OR shortdescription IS NOT NULL
OR longdescription IS NOT NULL)
/* selects records from #irish table (which we inserted in the last section) */
SELECT * FROM #irish
DROP TABLE #irish
值得注意的是,在当前查询中使用临时表几乎没有什么好处(如果有的话)
我希望这有帮助。您的原始代码有几个问题,请参阅Gordon的评论,因此如果您想深入挖掘,我建议您阅读一些教程。这是一个很好的起点 我相信这就是你的目标:
/* Creates #irish table */
CREATE TABLE #irish (
code NVARCHAR(MAX)
,shortdescription NVARCHAR(MAX)
,longdescription NVARCHAR(MAX)
,fulldescription NVARCHAR(MAX)
,codeType NVARCHAR(MAX)
,useThruDate NVARCHAR(MAX)
,updateDate NVARCHAR(MAX)
,updateComment NVARCHAR(MAX)
,createDate NVARCHAR(MAX)
/* insert select into #irish table */
INSERT INTO #irish
SELECT DISTINCT
Code,ShortDescription,LongDescription, fullDescripton,
codeType, useThruDate, updateDate, updateComment, createDate
FROM dbo.irish
WHERE
useThruDate <> '2016-30-06'
/* My best understanding of your count critera */
AND (code IS NOT NULL
OR shortdescription IS NOT NULL
OR longdescription IS NOT NULL)
/* selects records from #irish table (which we inserted in the last section) */
SELECT * FROM #irish
DROP TABLE #irish
值得注意的是,在当前查询中使用临时表几乎没有什么好处(如果有的话)
我希望这有帮助。您的原始代码有几个问题,请参阅Gordon的评论,因此如果您想深入挖掘,我建议您阅读一些教程。这是一个很好的起点 你能补充你的问题编辑,一点样本数据和结果吗?不幸的是,他们都是varchars。code=int shortDescription=int longDescription=varchar text-human readable fullDescription=varchar text-human readable codeType=useThruDate所在的数据库的简短描述采用以下格式=YYYY-DD-MM updateDate=YYYY-DD-MM您试图做什么???从SQL语法来看,它看起来不正确。您缺少嵌套查询中的。你能解释一下你想做什么吗?不要在评论中发布代码/结果。使用按钮来更新你的问题。你的代码有太多的错误,真的没有地方可供选择-混合选择和删除,引用不存在的列,将聚合函数放在何处,使用没有分组依据的聚合函数。你应该删除这个问题,然后问另一个问题,提供样本数据和期望的结果,并解释你试图做什么。你能在你的问题上添加一些样本数据和结果吗?不幸的是,它们都是varchars。code=int shortDescription=int longDescription=varchar text-human readable fullDescription=varchar text-human readable codeType=useThruDate所在的数据库的简短描述采用以下格式=YYYY-DD-MM updateDate=YYYY-DD-MM您试图做什么???从SQL语法来看,它看起来不正确。您缺少嵌套查询中的。你能解释一下你想做什么吗?不要在评论中发布代码/结果。使用按钮来更新你的问题。你的代码有太多的错误,真的没有地方可供选择-混合选择和删除,引用不存在的列,将聚合函数放在何处,使用没有分组依据的聚合函数。你应该删除这个问题,然后问另一个问题,提供样本数据和期望的结果,并解释你试图做什么。