今天想了解一下flowable是怎么样查询代办的,于是打断点结果发现有一个SQL语句有点意思
SELECT DISTINCT
RES.*
FROM
ACT_RU_TASK RES
WHERE
RES.ASSIGNEE_ IS NULL
AND EXISTS (
SELECT
LINK.ID_
FROM
ACT_RU_IDENTITYLINK LINK
WHERE
LINK.TYPE_ = 'candidate'
AND LINK.TASK_ID_ = RES.ID_
AND ( LINK.GROUP_ID_ IN ("46" ) )
)
AND RES.SUSPENSION_STATE_ = 1
ORDER BY
RES.CREATE_TIME_ DESC
里面有一个EXISTS,这个我不是很熟悉只是知道它是返回false或者是true的,这个关键字具体后面细说吧. 然后我突发奇想要是直接改成下面这样会是什么结果呢?
SELECT DISTINCT
RES.*
FROM
ACT_RU_TASK RES
WHERE
RES.ASSIGNEE_ IS NULL
AND FALSE
AND RES.SUSPENSION_STATE_ = 1
ORDER BY
RES.CREATE_TIME_ DESC
没想到直接啥结果没有了
原因
当WHERE子句中包含false时,这个条件永远为false,哪怕其他条件是符合的,不管表中有多少行数据,都不会返回任何结果。 看来确实是对Mysql的理解不够深刻
其他示例
这种写法通常用于强制让一个查询不返回任何行,或者让一个查询返回所有:
select * from table where false;
select * from table where true;
标签:RU,false,RES,子句,LINK,Mysql,WHERE,ID
From: https://blog.51cto.com/u_15527112/7418069