我有一个 MySQL 表,看起来像这样:
|---ID---|---COUNTER---|
| 1 | 2 |
| 2 | 6 |
| 3 | 1 |
| 5 | 9 |
| 6 | 10 |
我正在寻找返回 ID 及其 COUNTER 的 SELECT 语句。该表只有 ID,例如:1、2、3、5、6。是否有声明你说:我想要 ID 的 1 到 10,即使它们不存在于表中,如果 ID 不存在,无论如何返回 ID 和 COUNTER 值 0。例如:
|---ID---|---COUNTER---|
| 1 | 2 |
| 2 | 6 |
| 3 | 1 |
| 4 | 0 |
| 5 | 9 |
| 6 | 10 |
| 7 | 0 |
| 8 | 0 |
| 9 | 0 |
| 10 | 0 |
我是否必须创建包含 NOT EXIST 参数的 SELECT 语句?
提前致谢,史蒂夫-O
最佳答案
不创建临时表:
select t.num as id, coalesce(yt.counter, 0)
from your_table yt
right join (
select 1 as num union select 2 union select 3 union select 4 union select 5 union
select 6 union select 7 union select 8 union select 9 union select 10
) t on yt.id = t.num
order by t.num
更一般一点:
select t.num as id, coalesce(yt.counter, 0)
from your_table yt
right join (
select t1.num + t2.num * 10 + t3.num * 100 as num
from (
select 1 as num union select 2 union select 3 union select 4 union select 5 union
select 6 union select 7 union select 8 union select 9 union select 0
) t1
cross join (
select 1 as num union select 2 union select 3 union select 4 union select 5 union
select 6 union select 7 union select 8 union select 9 union select 0
) t2
cross join (
select 1 as num union select 2 union select 3 union select 4 union select 5 union
select 6 union select 7 union select 8 union select 9 union select 0
) t3
) t on yt.id = t.num
where t.num between (select min(id) from your_table) and (select max(id) from your_table)
你可以在这里自己定义限制.
关于mysql - 从 SQL SELECT 语句获取值,即使它不存在于表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9158248/