mysql - 从 SQL SELECT 语句获取值,即使它不存在于表中

标签 mysql sql select if-statement

我有一个 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/

相关文章:

php - 查询列中的多个值

mysql - 如何知道我在 MySQL 中的时区

php - undefined variable : num

sql - 连接表上的 Where 子句

mysql - 根据共享 ID 选择多个单元格的总数

android - Sqlite:遍历字符串字段的子字符串

android - 在Webview中长按-应用崩溃

MySQL条件表更新未知列错误1054

mysql - 如何检查哪个 ID 具有另一个属性的所有不同值?

php - 需要mysql select data where until的解决方案