在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。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
请您帮我理解如何清除与该联系人相关的所有照片,然后删除另外两张表中的相关数据
感谢
答案 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)