我试图构建一个简单的select,它提示输入childfield并返回父字段的结果。在大多数情况下,只列出一个父项,但当多个父项出现时,“单行子查询返回多行”错误,我不确定如何解决。
Select Date, location, MiscData, ChildField, ParentField
from Maintable t1
where childfield = (select t2.parentfield from maintable t2 where t2.childfield = @('prompt', childfield))
正如我所提到的,我们的绝大多数数据都只有一个父字段,但当有多个父字段时,就会出错。可以说,我已经开始被自己的脚绊倒了,而且可能是用完全错误的方式思考这个问题,可能需要一些指针或者至少是朝着正确的方向推动。
只是为了对我的代码做一点澄清;parentfield曾经包含在childfield中,这就是我试图获得的结果。当parentfield是childfield时,它就没有parentfield了。
我制作了下面的示例集,试图提供一些我正在处理的项目的想法。有了这一套,我们可以想象一个孩子可以由多个父母组成,这就是为什么我们可能会有多个行。”不,这不是给酒吧的-只是一个样本集“
4条答案
按热度按时间vwkv1x7d1#
试试这个
djp7away2#
出现此问题的主要原因是子查询返回多个结果集
有各种各样的解决方案让我们看看下面的解决方案一个接一个。
1子查询中的前1个
2内部联接而不是子查询
我希望以上的解决方案能对你有所帮助。
5tmbdcev3#
你的解释有点难以理解,但看看你的数据,你的一些行似乎已经被其他行取代了。
如果你在找,你想。。。
第一行('a-old'),因为它仍然是并且没有被替换。
第三行('b-new'),替换第二行(parentfield->childfield,same date)
第六行('d-new'),替换第五行(parentfield->childfield,同一日期)
如果是这样,那么我建议使用自外部联接:
gmxoilav4#
我回顾了一些提供的建议,我能做的最好的是由拉贾特。
我没有收到任何数据,我发现这是由于臭名昭著的'空间'字符,把一切都抛出了怪圈。