IN MySQL SELECT 查询 IF 表中未找到值 返回 0 ELSE 返回值

IN MySQL SELECT Query IF Value not Found in Table Return 0 ELSE return the value

提问人:Sudhir Solka 提问时间:8/9/2023 最后编辑:Sudhir Solka 更新时间:8/9/2023 访问量:48

问:

我的问题:我需要Mysql查询,如果在任何表中都没有找到值,那么我想将结果值返回为零,否则是我找到的值。

我尝试了 ChatGPT 提供的每个解决方案,但我没有得到我的具体结果

我试过了,

SELECT IF( EXISTS( SELECT RepairingId FROM expenses where WorkDate='2023-07-23 00:00:00' and VehRegNo='PB-56B-8508'), 1, 0) AS RepairId;` -- this is working but i want the value of RepairingId not just 1
         
SELECT IFNULL(RepairingId, 0) AS result FROM expenses where WorkDate='2023-07-24 00:00:00' and VehRegNo='PB-56B-8508';` -- this give me no value

SELECT CASE WHEN RepairingId IS NOT NULL THEN RepairingId ELSE 0 END AS resultFROM expenses where WorkDate='2023-07-24 00:00:00' and VehRegNo='PB-56B-8508'; -- this give me no value
mysql if语句

评论

1赞 Eric 8/9/2023
你为什么不依靠自己而不是ChatGPT?

答:

0赞 San Jahaziel 8/9/2023 #1

尝试

SELECT IFNULL((SELECT RepairingId FROM expenses WHERE WorkDate='2023-07-23 00:00:00' AND VehRegNo='PB-56B-8508'), 0) AS RepairId;

SELECT IFNULL(RepairingId, 0) AS result FROM expenses WHERE WorkDate='2023-07-24 00:00:00' AND VehRegNo='PB-56B-8508' LIMIT 1;

SELECT CASE WHEN RepairingId IS NOT NULL THEN RepairingId ELSE 0 END AS result FROM expenses WHERE WorkDate='2023-07-24 00:00:00' AND VehRegNo='PB-56B-8508' LIMIT 1;
0赞 Asi Salo 8/9/2023 #2

试试这个:

SELECT IFNULL(
    (SELECT RepairingId FROM expenses WHERE WorkDate='2023-07-24 00:00:00' AND VehRegNo='PB-56B-8508' LIMIT 1),
    0
) AS result;

你可以在 dbfiddle 中看到我的例子