mysql语句简化问题

请问各位大神,像下面这种sql语句应该怎么简化呢?感觉重复的代码太多了,请大神给予指点,谢谢!

SELECT
id,
(
    CASE
    WHEN UNIX_TIMESTAMP(start_time) > UNIX_TIMESTAMP(CURDATE()) THEN 0
    WHEN UNIX_TIMESTAMP(start_time) = UNIX_TIMESTAMP(CURDATE()) THEN 1
    END
) state,
(
    CASE
    WHEN UNIX_TIMESTAMP(start_time) > UNIX_TIMESTAMP(CURDATE()) THEN CONCAT('未开始-', title)
    WHEN UNIX_TIMESTAMP(start_time) = UNIX_TIMESTAMP(CURDATE()) THEN CONCAT('进行中-', title)
    END
) title,
(
    CASE
    WHEN UNIX_TIMESTAMP(start_time) > UNIX_TIMESTAMP(CURDATE()) THEN '还没有开始哦'
    WHEN UNIX_TIMESTAMP(start_time) = UNIX_TIMESTAMP(CURDATE()) THEN '已经开始了'
    END
) msg

FROM
content
WHERE

STATUS = 1
阅读 1.9k
1 个回答

多嘴说一句,这样的在SQL做字符串并接,真的适合维护吗?再加上SQL语法可读性不高,我说你定义一个函数再调用,这样真的能减少代码量吗?我觉得在这方面还是交给别的语言来操作更好一点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题