MySQL Select 当不存在时 return 1

MySQL Select when not exist return 1

我在 MySQL 查询中遇到问题:

我怎么能 SELECT 一些东西,但是当它因为不存在而出错时,它应该 return 一个像 1 或其他东西的值。

我的查询

SELECT License FROM fivem_auth WHERE IP = '34.45.34.77';

行不存在时不会报错。它只是 return 没有行。如果您期望一个值,这里有两种方法 return NULL 代替:

SELECT (SELECT License FROM fivem_auth WHERE IP = '34.45.34.77') as Licence;

SELECT MAX(License)
FROM fivem_auth
WHERE IP = '34.45.34.77';

对于其中任何一个,您可以使用 COALESCE() 来 return 一个非 NULL 值。但是 NULL 似乎适合在 table.

中没有值

如果 IP 是唯一的,并且您希望结果中只有 1 行,请使用聚合,即使条件失败,也总是 return 一行,在这种情况下,COALESCE() 将return 1:

SELECT COALESCE(MAX(License), '1') 
FROM fivem_auth 
WHERE IP = '34.45.34.77';

您可以 UNION 您的查询使用 returns 如果该行不存在则为默认值的查询。

SELECT License FROM fivem_auth WHERE IP = '34.45.34.77'
UNION ALL
SELECT 1 FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM fivem_auth WHERE IP = '34.45.34.77')