【问题标题】:MySQL Select when not exist return 1MySQL 选择不存在时返回 1
【发布时间】:2021-07-27 23:30:23
【问题描述】:

我的 MySQL 查询有问题:

我怎样才能选择某些东西,但是当它因为它不存在而出错时,它应该返回一个值,例如 1 或其他值。

我的查询

SELECT License FROM fivem_auth WHERE IP = '34.45.34.77';

【问题讨论】:

  • 可以有多行,如果存在就需要全部返回?
  • 该查询不会出错。它只会返回 0 行。不太清楚你在问什么。

标签: mysql sql mariadb mariasql


【解决方案1】:

你可以UNION你的查询,如果该行不存在,则返回默认值。

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

【讨论】:

    【解决方案2】:

    当行不存在时没有错误。它只是不返回任何行。如果您期望一个值,这里有两种方法返回 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() 返回非NULL 值。但NULL 似乎适合在表中没有价值。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 2014-09-01
        • 2014-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多