我们遇到一定的逻辑处理时,一般想到的是数据库函数或者存储过程等。
但是,这些都一定限制,一个是数据库版本,一个是现网环境是否允许。
另外一种带有逻辑处理的SQL语句出现,就是case语句
比如:MAX函数,这个功能是mysql提供的,取多条记录中,某个字段的最大值的
a | b |
1 | 测试 |
2 | 测试2 |
取两条记录中,a值最大的那条。
select max(a) from xxx
这里max的输入参数只能是一个字段
那如果,两个表的两个字段,取其中值最大的呢,使用max函数就不行了。
这个时候,要么自定义函数
今天说的就是这个case语句
case开头,end结尾,中间条件表达式使用when 条件语句 then 输出值;else 其他值
select (case when a>b then a else b end) as time from 表1, 表2 where 表1.id = 表2.id
最后,还有一种union的写法,借鉴以下
SELECT column1 AS max_value FROM table_name
WHERE column1 >= column2 AND column1 >= column3
UNION
SELECT column2 AS max_value FROM table_name
WHERE column2 >= column1 AND column2 >= column3
UNION
SELECT column3 AS max_value FROM table_name
WHERE column3 >= column1 AND column3 >= column2
LIMIT 1;