MySQL 替换 SELECT CASE 查询中的值

MySQL replace values in SELECT CASE query

CASE WHEN 有问题。

我写了一个查询,它在没有 CASE WHEN 的情况下工作正常,它看起来像:

SELECT r.data,
       r.data1,
       r.godzina,
       r.zmiana,
       r.nrpartii,
       r.nazwadzianiny,
       r.nazwamaszyny,
       r.rzad,
       r.nrmaszyny,
       r.starynrmaszyny,
       r.nruiglenia,
       r.wydzigla,
       r.waga,
       r.uwagipredkoscmaszyny,
       u1.user_nicename,
       u1.ID,
       u1.display_name 
    FROM jawe_wpdatatable_8 AS r
INNER JOIN jawe_users as u1 on u1.ID = r.uzytkownik

我想做的是根据 r.godzina

将 r.zmiana 值更改为“1”或“2”或“3”

我正在尝试这样的事情:

SELECT r.data,
       r.data1,
       r.godzina,
       CASE r.zmiana
        WHEN (r.godzina BETWEEN '08:00:00' AND '15:59:99') THEN r.zmiana = 1
        WHEN (r.godzina BETWEEN '16:00:00' AND '23:59:99') THEN r.zmiana = 2
        ELSE r.zmiana = 3
       END,
       r.nrpartii,
       r.nazwadzianiny,
       r.nazwamaszyny,
       r.rzad,
       r.nrmaszyny,
       r.starynrmaszyny,
       r.nruiglenia,
       r.wydzigla,
       r.waga,
       r.uwagipredkoscmaszyny,
       u1.user_nicename,
       u1.ID,
       u1.display_name 
    FROM jawe_wpdatatable_8 AS r
INNER JOIN jawe_users as u1 on u1.ID = r.uzytkownik

天哪,r.zmiana 的起始值为 NULL 我尝试了很多变化,但我得到的(在最好的情况下)是带有 NULL 值和名称的新列,它是整个 'CASE.....END' 代码。

如何获取此 CASE ... ENG 将 r.zmiana 中的值(仅用于显示目的)从 NULL 替换为“1”或“2”或“3”?

提前致谢。

---已编辑---

'Asgar'是答对的那个

是的,你是对的阿斯加。但这部分起作用(而不是'1'它给我'3':))。所以我将 BETWEEN 更改为范围,它看起来像这样并且现在工作正常:

SELECT 
r.data, 
r.data1, 
r.godzina, 
CASE 
WHEN r.godzina >= '08:00:00' AND r.godzina <'16:00:00' THEN 1 
WHEN r.godzina >= '16:00:00' AND r.godzina <='23:59:99' THEN 2
WHEN r.godzina >= '00:00:00' AND r.godzina <'08:00:00' THEN 3
END, 
r.nrpartii, 
r.nazwadzianiny, 
r.nazwamaszyny, 
r.rzad, 
r.nrmaszyny, 
r.starynrmaszyny, 
r.nruiglenia, 
r.wydzigla, 
r.waga, 
r.uwagipredkoscmaszyny, 
u1.user_nicename, 
u1.ID, u1.display_name 
FROM jawe_wpdatatable_8 AS r 
INNER JOIN jawe_users as u1 on u1.ID = r.uzytkownik

我只有一个问题。是的,它有效,但列名仍然是完整的 CASE ... END 代码。怎么改成'zmiana'有这种可能吗?

您的 CASE WHEN 语法似乎有误。

CASE WHEN 查询的简单说明是:

SELECT
  CASE level
    WHEN 'A' THEN 'Beginner'
    WHEN 'B' THEN 'Junior'
    WHEN 'C' THEN 'Senior'
    ELSE 'Level doesn`t exist!'
  END AS experience_levels
FROM company;

因此您的查询需要类似于:

SELECT r.data,
       r.data1,
       r.godzina,
       CASE 
        WHEN r.godzina BETWEEN '08:00:00' AND '15:59:99' THEN  1
        WHEN r.godzina BETWEEN '16:00:00' AND '23:59:99' THEN 2
        ELSE 3
       END as zmiana,
       r.nrpartii,
       r.nazwadzianiny,
       r.nazwamaszyny,
       r.rzad,
       r.nrmaszyny,
       r.starynrmaszyny,
       r.nruiglenia,
       r.wydzigla,
       r.waga,
       r.uwagipredkoscmaszyny,
       u1.user_nicename,
       u1.ID,
       u1.display_name 
    FROM jawe_wpdatatable_8 AS r
INNER JOIN jawe_users as u1 on u1.ID = r.uzytkownik