Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL SERVER中使用多表关系删除列的重复行_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

在SQL SERVER中使用多表关系删除列的重复行

在SQL SERVER中使用多表关系删除列的重复行,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,我包含一个商店谁出售宠物,如狗,猫等,为我的项目的数据库 我有表名Animal,其中有动物名称的详细信息,可以在另一个表中找到 说出动物的名字,无论是狗还是猫等 对于每种dscvr类型,我有4或5个类别,如昂贵、更昂贵、便宜、负担得起。我正在另一个表名Animal_DISCOVERY_category中维护该类别 我的最后一张表是动物的发现规则,动物的行为应该遵循这些规则 ANIMAL - ANIMAL_NAME,ANIMAL_ID ANIMAL_DISCOVERY - ANIMAL_DISC

我包含一个商店谁出售宠物,如狗,猫等,为我的项目的数据库

我有表名Animal,其中有动物名称的详细信息,可以在另一个表中找到 说出动物的名字,无论是狗还是猫等

对于每种dscvr类型,我有4或5个类别,如昂贵、更昂贵、便宜、负担得起。我正在另一个表名Animal_DISCOVERY_category中维护该类别

我的最后一张表是动物的发现规则,动物的行为应该遵循这些规则

ANIMAL - ANIMAL_NAME,ANIMAL_ID

ANIMAL_DISCOVERY - ANIMAL_DISCOVERY_GROUP, ANIMAL_DISCOVERY_ID

ANIMAL_DISCOVERY_CATEGORY - ANIMAL_DISCOVERY_CATEGORY_ID,ANIMAL_DISCOVERY_CATEGORY_TEXT

ANIMAL_DISCOVERY_RULES - ANIMAL_DISCOVERY_RULES_ID,ANIMAL_DISCOVERY_ID,ANIMAL_DISCOVERY_CATEGORY_ID,ANIMAL_DISCOVERY_RULES_TEXT
现在是我的问题,我有很多关于动物发现规则的数据。对于每个动物类型及其类别,我在Animal_DISCOVERY_rules表中都有重复的规则,我只想删除其中一个

请帮助我编写一个可以执行此操作的查询

下面是查询和结果

select appl.ANIMAL_NAME,cate.ANIMAL_DISCOVERY_CATEGORY_TEXT,count(ANIMAL_DISCOVERY_RULES_TEXT) AS RULE_COUNT from ANIMAL_DISCOVERY_RULES rul INNER JOIN
    ANIMAL_DISCOVERY_CATEGORY cate ON rul.ANIMAL_DISCOVERY_CATEGORY_ID=cate .ANIMAL_DISCOVERY_CATEGORY_ID INNER JOIN
    ANIMAL_DISCOVERY grp ON rul.ANIMAL_DISCOVERY_ID=grp.ANIMAL_DISCOVERY_ID INNER JOIN
    ANIMAL appl ON grp.ANIMAL_ID= appl.ANIMAL_ID
    group by cate.ANIMAL_DISCOVERY_CATEGORY_TEXT,appl.ANIMAL_NAME

Animal Name    Category Rules
A1             Dog      Do not use hot water for bath
A1             Cat      Do not use hot water for bath
A1             Dog      Do not use hot water for bath
C1             Dog      Give regular injection
C1             Parrot   Do not give more then 2 chilli a day
我想要的是,对于动物名称A1,对于类别狗,有重复的规则。我想按类别删除所有动物名称组的所有这些类型的重复规则


希望它更清楚。

我想你在寻找这样的东西:我的假设是你的动物\u发现\u规则\u id是pk,你不在乎你保留哪一行

 ;With DistinctDiscoveryRule AS
 (   
 SELECT appl.ANIMAL_NAME
 ,cate.ANIMAL_DISCOVERY_CATEGORY_TEXT,
 min(​ANIMAL_DISCOVERY_RULES_ID) AS ANIMAL_DISCOVERY_RULES_ID 
 from ANIMAL_DISCOVERY_RULES rul INNER JOIN 
 ANIMAL_DISCOVERY_CATEGORY cate ON rul.ANIMAL_DISCOVERY_CATEGORY_ID=cate .ANIMAL_DISCOVERY_CATEGORY_ID INNER JOIN 
 ANIMAL_DISCOVERY grp ON rul.ANIMAL_DISCOVERY_ID=grp.ANIMAL_DISCOVERY_ID INNER JOIN ANIMAL appl ON grp.ANIMAL_ID= appl.ANIMAL_ID 
 group by cate.ANIMAL_DISCOVERY_CATEGORY_TEXT,appl.ANIMAL_NAME

 )
 Delete adr
 FROM   ANIMAL_DISCOVERY_RULES adr LEFT OUTER JOIN
        DistinctDiscoveryRule d on adr.ANIMAL_DISCOVERY_RULES_ID = d.ANIMAL_DISCOVERY_RULES_ID
 WHERE d.ANIMAL_DISCOVERY_RULES_ID IS NULL

您使用的是mysql还是sqlserver?这不是一回事。另外,你的问题很不清楚。一些样本数据和显示结果后可能会被忽略nice@SeanLange.. 它的sql Server请显示一些示例数据、预期输出以及您已经尝试过的内容。谢谢。@t\m。。这是我要选择的查询。。。选择应用动物名称、类别动物发现、类别文本,countANIMAL\u DISCOVERY\u RULES\u TEXT作为规则\u COUNT from ANIMAL\u DISCOVERY\u rul内部加入ANIMAL\u DISCOVERY\u CATEGORY\u ID=cate.ANIMAL\u DISCOVERY\u CATEGORY\u ID内部加入rul上的ANIMAL\u DISCOVERY\u ID=grp.ANIMAL\u DISCOVERY\u ID内部加入grp上的ANIMAL appl.ANIMAL\u ID=appl.ANIMAL\u ID=appl类别动物发现类别文本,应用动物名称