0
点赞
收藏
分享

微信扫一扫

Mysql - WHERE子句

吃面多放酱 2023-09-09 阅读 54

今天想了解一下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;
举报

相关推荐

0 条评论