我的以下数据包含2个不同的TBL_ID-337448和8612

"TBL_ID","PARAM_KEY","PARAM_VALUE"
 337448,"comment","CHANGE DUE"
 337448,"transient_lastDdlTime","1505760292"
 8612,"COLUMN_STATS_ACCURATE","true"
 8612,"numFiles","1"
 8612,"numRows","5294"
 8612,"rawDataSize","-1"
 8612,"totalSize","113217"
 8612,"transient_lastDdlTime","1452191300"


我需要查询所有不包含“ numRows”的TBL_ID
我尝试过的

SELECT * FROM TABLE_PARAMS
WHERE PARAM_KEY NOT IN ('numRows')


结果:

"TBL_ID","PARAM_KEY","PARAM_VALUE"
 337448,"comment","CHANGE DUE"
 337448,"transient_lastDdlTime","1505760292"
 8612,"COLUMN_STATS_ACCURATE","true"
 8612,"numFiles","1"
 8612,"rawDataSize","-1"
 8612,"totalSize","113217"
 8612,"transient_lastDdlTime","1452191300"


它确实使用numRows删除了该列,但我需要删除整个TBL_ID(8612)

最佳答案

您的问题有点模棱两可。 IN运算符用于从结果集中查找数据。例如2 IN {2,3,4}。

SELECT TBL_ID FROM  TABLE_PARAMS
WHERE PRAMAR_KEY='numRows'


如果您尝试不显示与numRows关联的任何ID,那么您必须先获取要过滤的ID,并且将用户NOT EQUALS过滤到该ID。
例如,如果您试图从集合中删除8612,因为它是Param_Key ='numRows'的ID,并且如果您想在运算符中使用,则

SELECT * FROM TABLE_PARAMS
WHERE TBL_ID NOT IN (SELECT TBL_ID FROM TABLE_PARAMS WHERE PARAM_KEY='numRows')

07-24 16:44