1
update/delete 不能从一个表中查出来就改变它
解决 再select 一次,记得取个别名
2
DATEDIFF(date1,date2)
计算日期相差多少天
adddate()
ADDDATE(date, INTERVAL expr unit) OR ADDDATE(expr, days)
返回值:添加间隔后,它将返回日期或DateTime。
TIMESTAMPDIFF()
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
unit: 日期比较返回的时间差单位,常用可选值如下:
SECOND:秒
MINUTE:分钟
HOUR:小时
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年
3
where 后没有聚合函数
4
表: Triangle
+-------------+------+ | Column Name | Type | +-------------+------+ | x | int | | y | int | | z | int | +-------------+------+ (x, y, z)是该表的主键列。 该表的每一行包含三个线段的长度。
写一个SQL查询,每三个线段报告它们是否可以形成一个三角形。
以 任意顺序 返回结果表。
查询结果格式如下所示。
示例 1:
输入: Triangle 表: +----+----+----+ | x | y | z | +----+----+----+ | 13 | 15 | 30 | | 10 | 20 | 15 | +----+----+----+输出: +----+----+----+----------+ | x | y | z | triangle | +----+----+----+----------+ | 13 | 15 | 30 | No | | 10 | 20 | 15 | Yes | +----+----+----+----------+
(1)if
select *,if(x+y>z and x+z>y and y+z>x,'Yes','No') as triangle from triangle;
(2)case
select *,case when x+y>z and x+z>y and y+z>x then 'Yes' else 'No' end as taiangle from triangle;
5
单一数字 是在 MyNumbers
表中只出现一次的数字。
请你编写一个 SQL 查询来报告最大的 单一数字 。如果不存在 单一数字 ,查询需报告 null
。
查询结果如下例所示。
输入:MyNumbers 表: +-----+ | num | +-----+ | 8 | | 8 | | 3 | | 3 | | 1 | | 4 | | 5 | | 6 | +-----+输出:+-----+ | num | +-----+ | 6 | +-----+解释:单一数字有 1、4、5 和 6 。 6 是最大的单一数字,返回 6 。
select if(count(num)=1,num,null) from mynumbers group by num order by num desc limit 1;
6
保留两位小数 round(..,2)