[英]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
我 frogot,r.zmiana 的起始值是 NULL 我尝试了很多变体,但我得到的(在最好的情况下)是具有 NULL 值和名称的新列,它是整个 'CASE.....END' 代码。
如何获取此 CASE ... ENG 将 r.zmiana 中的值从 NULL 替换为 '1' 或 '2' 或 '3' ?
提前致谢。
---已编辑---
'Asgar' 是正确答案的那个。
是的,你是对的阿斯加。 但这部分有效(而不是'1'它给了我'3':))。 所以我将 BETWEEN 更改为 range ,它看起来像这样并且现在可以正常工作:
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 Query 的一个简单说明是:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.