Mysql 添加拒绝原因的SQL脚本

Mysql 添加拒绝原因的SQL脚本,mysql,sql,sql-scripts,Mysql,Sql,Sql Scripts,在下面的SQL中,它在我的excel工作表中找到坏行,并将它们复制到另一个表中。 这很好用。但是,在下面的每个或语句下,我想使列rejectionreason=一些错误文本。 例如,如果eventID为=0,则将行移动到表中,同时将列rejectionreason更新为文本错误eventID为0 我还需要对下面的所有其他OR语句执行类似操作 我该怎么做 SQL 您可以尝试以下方法: REPLACE INTO InvalidBaseDataTable SELECT *, CASE WHE

在下面的SQL中,它在我的excel工作表中找到坏行,并将它们复制到另一个表中。 这很好用。但是,在下面的每个或语句下,我想使列rejectionreason=一些错误文本。 例如,如果eventID为=0,则将行移动到表中,同时将列rejectionreason更新为文本错误eventID为0

我还需要对下面的所有其他OR语句执行类似操作

我该怎么做

SQL


您可以尝试以下方法:

REPLACE INTO InvalidBaseDataTable 
SELECT *, CASE
    WHEN dateTime = '0000-00-00 00:00:00' THEN 'datetime equal to 0'
    WHEN eventId = 0 THEN 'eventId equal to 0'
    WHEN ueType = 0 THEN 'ueType equal to 0'
    ELSE 'All good'
END AS rejectionreason
FROM BaseDataTable WHERE dateTime = '0000-00-00 00:00:00'        
OR eventId = 0
OR ueType = 0
OR eventId NOT IN (SELECT DISTINCT(eventId) FROM EventCauseTable)
OR causeCode < (SELECT MIN(causeCode) FROM EventCauseTable)
OR causeCode > (SELECT MAX(causeCode) FROM EventCauseTable)
OR ueType NOT IN (SELECT DISTINCT(tac) FROM UeTable)
OR (eventId NOT IN (SELECT DISTINCT(eventId) FROM EventCauseTable)
    AND 
    causeCode NOT IN (SELECT DISTINCT(causeCode) FROM EventCauseTable))

我会这样做

特别是因为你只需要做一次测试,而不是一次来发现问题,然后再做一次相同的测试来找出原因

select * 
from  (select id, 
              case when dateTime = '0000-00-00 00:00:00' then 'dateTime = 00000-00-00 00:00:00' else
              case when eventId = 0  or ueType = 0 then 'eventId or ueType = 0' else
              case when eventId not in (SELECT DISTINCT(eventId) FROM EventCauseTable) then 'eventId not in EventCauseTable' else 
              case when testMe2 not in (select value from valueList) then 'Value in testMe2 is not in Values' else null end end end end end result
       from testThis) x
where result is not null;
select * 
from  (select id, 
              case when dateTime = '0000-00-00 00:00:00' then 'dateTime = 00000-00-00 00:00:00' else
              case when eventId = 0  or ueType = 0 then 'eventId or ueType = 0' else
              case when eventId not in (SELECT DISTINCT(eventId) FROM EventCauseTable) then 'eventId not in EventCauseTable' else 
              case when testMe2 not in (select value from valueList) then 'Value in testMe2 is not in Values' else null end end end end end result
       from testThis) x
where result is not null;