如何从联系人表和列表中删除数据

时间:2018-04-17 11:36:51

标签: sql sql-server

在sql server management 2014中有一个主表,名称为Contact,另一个名称为ContactPhoto,并且它们之间还有一个联系表,名称为ContactAndContactPhoto。他们之间的关系是一样的。首先插入一个联系人,然后在ContactPhoto中插入一个照片列表,同时插入ContactAndContactPhoto中的contactId,将插入PhotoId。

问题是当我想删除一个我需要删除其信息的联系人时。我应该传递一个contactId并删除Contact,ContactAndContactPhoto和ContactPhoto中的相关行,这在前两个表中很简单但是对于ContactPhoto,我需要获取ContactId的PhotoId列表...为此我声明了一个列表:

    Declare @MyList int
    Set @MyList = (Select PhotoId From tblContactAndtblContactPhoto Where 
   ContactId=@Id);



 Delete tblContactPhoto Where Id IN(@MyList)

或获取PhotoId列表但达到错误的其他方式: 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。

请您帮我理解如何清除与该联系人相关的所有照片,然后删除另外两张表中的相关数据

感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询语句。您的子查询语句将返回多行。

def recurse(x, remaining):

    if len(remaining) == 0:
        assert x == [3, 2, 1] # This does not raise????
        return x
    x.append(remaining.pop())
    recurse(x, remaining)

x = [1, 2, 3]
y = recurse([], x)