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')
我在 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')