我的SELECT查询存在问题。我试图找到不以“50700”开头并且启用标志为1的项目属于类别4和子类别4.以下是我的查询但是当我知道有一些时它没有返回任何结果。请注意TBL1.FIELD1 = ITM_ID,TBL1.FIELD2 = ENABLED,TBL2.FIELD1 = CAT_ID,TBL2.FIELD2 = SUBCAT_ID。
SELECT DB_NAME.dbo.TBL1.FIELD1
, DB_NAME.dbo.TBL1.FIELD2
, DB_NAME.dbo.TBL2.FIELD1
, DB_NAME.dbo.TBL2.FIELD2
FROM DB_NAME.dbo.TBL1
, DB_NAME.dbo.TBL2
WHERE DB_NAME.dbo.TBL1.FIELD1 NOT LIKE '50700%'
AND DB_NAME.dbo.TBL1.FIELD2 = 1
AND DB_NAME.dbo.TBL2.FIELD1 = 4
AND DB_NAME.dbo.TBL2.FIELD2 = 4
答案 0 :(得分:0)
您可以将查询分解为不同的子查询以进行调试,这样您就可以确定哪个“AND”条件不起作用。
例如: 首先,我猜你应该用简单的查询在TBL1.FIELD1上尝试一个简单的查询:
select TBL1.FIELD1 from DB_NAME.dbo.TBL1 where DB_NAME.dbo.TBL1.FIELD1 NOT LIKE '50700' ;(*if TBL1.FIELD1 is of String type, else go for TBL1.FIELD1 != 50700 * )
然后,如果您得到结果,请尝试使用TBL1.FIELD2条件进行“与”。
select TBL1.FIELD1
from DB_NAME.dbo.TBL1
where DB_NAME.dbo.TBL1.FIELD1 NOT LIKE '50700'
and DB_NAME.dbo.TBL1.FIELD2 =4 ;
这样您可以继续进行并调试查询。希望它有所帮助:)