数据库应用——简单的in子查询,请先单独执行子查询的内容原创
9人赞赏了该文章
685次浏览
编辑于2021年11月12日 09:31:55
最近在验证批号主档信息中的业务类型字段(FBIZTYPE)的使用情况时,写了这样的查询:
select * from T_BD_LOTMASTER where FLOTID in (select FLOTID from T_STK_INVENTORY)
查询结果中显示即时库存使用了“非库存”类型的批号,让人感觉非常奇怪。
原来是子查询中的批号字段写错了,即时库存的批号字段是FLOT而不是FLOTID ,如果单独执行子查询的内容的话:
就会给出列名无效的提示。
这就要求我们在写这类查询的时候要特别注意,子查询中使用了主查询的字段,这是sql语法中支持的。如果并非想要在子查询中引用主查询的字段的话,最好是单独执行一下子查询。在本例中写错的sql,其结果等同于:
select * from T_BD_LOTMASTER where FLOTID=FLOTID
因此会显示所有的数据出来。