如果存在的话,我会从MariaDB中得到意想不到的结果。在存储过程中。我创建了一个很小的例子来演示这个问题:
PROCEDURE testdb.testSearchResults(IN pParam1 INT, IN pParam2 CHAR(2))
BEGIN
IF EXISTS(SELECT COUNT(*) FROM test WHERE intval = pParam1 AND text = pParam2) THEN
SELECT 'Found' AS result;
ELSE
SELECT 'Not Found' AS result;
END IF;
END无论文件"test“的内容是什么,还是我给出的调用参数,这个过程总是返回”查找“。
我做错什么了吗?
谢谢。
发布于 2019-11-20 14:08:20
SELECT COUNT(*)总是至少返回一个记录(可能为零)。所以IF EXISTS总是正确的。
你可以:
SELECT COUNT(*) ...替换为SELECT 1 ...IF EXISTS(SELECT ...替换为IF 0 < (SELECT ...我认为第一个变体更快。它只检查至少存在一条记录,因此必须在找到第一条记录之后停止搜索,而第二次查询必须获得所有匹配的记录,计数它们,然后将结果与零进行比较。
https://dba.stackexchange.com/questions/253724
复制相似问题