0

如果is_closed从查询中返回为 true,我如何告诉查询设置closing_timeclosed,而不是显示行中的实际内容......例如23:00:00

我试过

AND IF(is_closed = 1, 1, 0) closing_time = 'closed'

但这导致

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 27 行的 'closing_time = 'closed' GROUP BY avenues.VENUE_NAME' 附近使用

谢谢!

编辑 closing_time是一个日期字段。

4

2 回答 2

2

在您的字段列表中添加一个条件语句:

SELECT 
  < some column(s) here >, 
  CASE WHEN is_closed = 1 
       THEN 'closed' 
       ELSE closing_time END AS CLOSING_TIME_OR_CLOSED
...

可以在此处找到经过测试的示例:http ://sqlfiddle.com/#!2/108c1/2

与 IF 语句相比,CASE 语句是 ANSI SQL,这意味着您可以在任何实现 ANSI 标准的 RDBMS 上运行查询。

于 2013-01-30T19:24:51.577 回答
1

如果closing_time是数据类型 TIME,那么您可以在 SELECT 列表中使用这样的表达式:

SELECT IF(is_closed=1,'closed',TIME_FORMAT(closing_time,'%H:%i')) AS closing_time

请注意,此表达式将返回一个字符串(VARCHAR 数据类型)。

于 2013-01-30T19:40:28.760 回答