zend框架中的when case update查询

When case update query in zend framework

这是我的 mysql 查询

UPDATE uss20_prj_avunea.tbl_loc_images SET img_sortorder = CASE img_id WHEN 210 THEN 1 WHEN 211 THEN 2 WHEN 67 THEN 3 WHEN 62 THEN 4 WHEN 207 THEN 5 WHEN 208 THEN 6 WHEN 209 THEN 7 END WHERE img_id IN ( 210, 211, 67, 62, 207, 208, 209 )

我有动态图片id组,可以增加或减少 任何人都可以帮助我为上述 mysql 查询

创建 zend pdo

这样试试:

UPDATE uss20_prj_avunea.tbl_loc_images SET img_sortorder = 
(SELECT CASE WHEN img_id = 210 THEN 1 
WHEN img_id = 211 THEN 2 
WHEN img_id = 67 THEN 3 
WHEN img_id = 62 THEN 4 
WHEN img_id = 207 THEN 5 
WHEN img_id = 208 THEN 6
WHEN img_id = 209 THEN 7 END from tbl_loc_images)
WHERE img_id IN ( 210, 211, 67, 62, 207, 208, 209)

尚未测试。

我认为它 returns 是一个错误,因为您只需要记录 SET img_sortorder。如果有效,您可以尝试将其限制为1。

new \Zend\Db\Sql\Expression(CASE img_id 当 210 然后 1 当 211 然后 2 当 67 然后 3 当 62 然后 4 当 207 然后 5 当 208 然后 6 当 209 然后 7 结束 ) 其中 img_id 在 ( 210, 211, 67, 62, 207, 208, 209 )

为此使用 Zf2 表达式。希望对你有帮助。