我正在尝试使用CASE语句在MYSQL中使用简单的if / else语句创建我在下面演示的相同类型的逻辑。
基本上,如果第一个条件是正确的,那么我就放弃了其余的条件。如果第一个没有,第二个没有,那么放弃其余的等等。
所以在这个上下文中,我将从左到右填充数据库中的第一个空白列,意思是“nwc_signup”,如下所示。
if(rota.nwc_signup_1 = '') {
rota.nwc_signup_1 = ?
} else {
if(rota.nwc_signup_2 = '') {
rota.nwc_signup_2 = ?
} else {
if(rota.nwc_signup_3 = '') {
rota.nwc_signup_3 = ?
} else {
if(rota.nwc_signup_4 = '') {
rota.nwc_signup_4 = ?
}
}
}
}
我尝试在MYSQL中使用CASE语句,但它标记了一个错误。有没有人有一个巧妙的想法来帮助,这将是非常感激。
UPDATE
`rota`
INNER JOIN `signups`
ON
signups.signups_user_id = rota.signups_user_id
INNER JOIN `pre_rota`
ON
pre_rota.signups_user_id = signups.signups_user_id
SET
CASE
WHEN rota.nwc_signup_1 = ''
THEN rota.nwc_signup_1 = ?
ELSE
CASE
WHEN rota.nwc_signup_2 = ''
THEN rota.nwc_signup_2 = ?
ELSE
END
END,
WHERE
pre_rota.nwc_username = 'jacktrow'
MYSQL错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE
WHEN rota.nwc_signup_1 = ''
THEN SET rota.nwc_si' at line 15
答案 0 :(得分:1)
case
左侧set
不能使用case
。您可以对每列使用 SET rota.nwc_signup_1 = (CASE WHEN rota.nwc_signup_1 = '' THEN ? ELSE END),
rota.nwc_signup_2 = (CASE WHEN rota.nwc_signup_1 = '' THEN rota.nwc_signup_2
WHEN rota.nwc_signup_1 = '' THEN ?
ELSE rota.nwc_signup_2
END)
:
let buffer = UnsafeMutablePointer<CVPixelBuffer?>.alloc(1)
答案 1 :(得分:0)
下面的SQL似乎完美无缺。数据将被插入到空的四个nwc_signup
列的第一列中的第一列中,这意味着一旦找到从第一列开始的空列,就不会将其插入任何其他列中。第四栏。
SET
rota.nwc_signup_1 = (CASE WHEN rota.nwc_signup_1 = ''
THEN ? ELSE rota.nwc_signup_1 END),
rota.nwc_signup_2 = (CASE WHEN (rota.nwc_signup_1 != '' AND
rota.nwc_signup_2 = '')
THEN ? ELSE rota.nwc_signup_2 END),
rota.nwc_signup_3 = (CASE WHEN (rota.nwc_signup_1 != '' AND
rota.nwc_signup_2 != '' AND
rota.nwc_signup_3 = '')
THEN ? ELSE rota.nwc_signup_3 END),
rota.nwc_signup_4 = (CASE WHEN (rota.nwc_signup_1 != '' AND
rota.nwc_signup_2 != '' AND
rota.nwc_signup_3 != '' AND
rota.nwc_signup_4 = '')
THEN ? ELSE rota.nwc_signup_4 END),