一个小学生 Tim 的作业是判断三条线段是否能形成一个三角形。
然而,这个作业非常繁重,因为有几百组线段需要判断。
假设表 triangle 保存了所有三条线段的三元组 x, y, z ,你能帮 Tim 写一个查询语句,来判断每个三元组是否可以组成一个三角形吗?
| x | y | z |
|----|----|----|
| 13 | 15 | 30 |
| 10 | 20 | 15 |
对于如上样例数据,你的查询语句应该返回如下结果:
| x | y | z | triangle |
|----|----|----|----------|
| 13 | 15 | 30 | No |
| 10 | 20 | 15 | Yes |
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/triangle-judgement
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
审题:查询表添加一个字段,判断三角形是否成立。
思考:三角形需要两边之和大于第三边,只要有一种可能成立就可以形成三角形。
解题:
使用if语句:
select
T.*,
if((T.x+T.y>T.z) and (T.x+T.z>T.y) and (T.y+T.z>T.x),'Yes','No') as `triangle`
from triangle as T
使用 case语句:
select
T.*,
case when (T.x+T.y>T.z) and (T.x+T.z>T.y) and (T.y+T.z>T.x) then 'Yes'
else 'No' end as `triangle`
from triangle as T
知识点:
--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END