数据库应用——简单的in子查询,请先单独执行子查询的内容原创
金蝶云社区-i求知若渴
i求知若渴
9人赞赏了该文章 685次浏览 未经作者许可,禁止转载编辑于2021年11月12日 09:31:55

最近在验证批号主档信息中的业务类型字段(FBIZTYPE)的使用情况时,写了这样的查询:

select * from T_BD_LOTMASTER where FLOTID in (select FLOTID from T_STK_INVENTORY)

image.png

查询结果中显示即时库存使用了“非库存”类型的批号,让人感觉非常奇怪。

原来是子查询中的批号字段写错了,即时库存的批号字段是FLOT而不是FLOTID ,如果单独执行子查询的内容的话:

image.png

就会给出列名无效的提示。

这就要求我们在写这类查询的时候要特别注意,子查询中使用了主查询的字段,这是sql语法中支持的。如果并非想要在子查询中引用主查询的字段的话,最好是单独执行一下子查询。在本例中写错的sql,其结果等同于:

select * from T_BD_LOTMASTER where FLOTID=FLOTID

因此会显示所有的数据出来。



赞 9