gpt4 book ai didi

如果搜索不存在,MySql 使用默认值

转载 作者:行者123 更新时间:2023-11-29 12:10:32 26 4
gpt4 key购买 nike

我正在使用 MySQL

我有一个 Actions_table,其中包含多个用户的操作。我还有一个 Timing_table,用于映射要执行的每个操作的时间。

我可以将“操作”表中的操作与“计时”表进行匹配,但如果没有精确匹配(例如表),我希望它使用默认时间

Actions_Table
------------------------------
| Action | No Ids |
------------------------------
|Delete ID | 5 |
|Install App1 | 1 |
|Create ID | 1 |
|Rename ID | 2 |
------------------------------

Timing_Table
-------------------
|Action |Time |
-------------------
|Delete ID | 100 |
|Install App1| 200 |
|Create ID | 50 |
|Default | 60 |
--------------------

由于 Timings_Table 中没有列出“重命名 ID”,我希望它使用“默认”的时间值,因此我将提供一些链接。

-------------------------------------
| Action | No Ids | Total Time|
-------------------------------------
|Delete ID | 5 | 500 |
|Install App1 | 1 | 200 |
|Create ID | 1 | 50 |
|Rename ID | 2 | 120 | <== value was calculated from Default
-------------------------------------

基本代码

Select a.Action, a.`No Ids`, (a.`No Ids` * b.time) as `TotalTime
From Action_Table a, Timing_Table b
Where a.Action = b.Action

但是,这不会匹配任何与默认值不匹配的内容。

最佳答案

您想要的是左连接交叉连接:

Select a.Action, a.`No Ids`,
coalesce(b.time, def.time) as ImputedBTime,
(a.`No Ids` * coalesce(b.time, def.time)) as `TotalTime
From Action_Table a left join
Timing_Table b
on a.Action = b.Action cross join
(select t.* from Timing_Table t where t.action = 'default') def

简单规则:切勿在 from 子句中使用逗号。始终使用显式的 JOIN 语法。您应该了解不同类型的联接。

关于如果搜索不存在,MySql 使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30779117/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com