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
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