查询语法
- 字符在字符串中查询
select * from user where find_in_set(str,str_list) -- 区分 select * from table where uname in('aaa',bbb','ccc','ddd','eee',ffff'');
- 查找最大id的一条记录
SELECT * FROM sx_product_category WHERE id = (select MAX(`id`) from sx_product_category)
- 按条件整理查询结果(如果id>20显示20,否则显示id)
SELECT IF ( ( id > 20), 20, id ) id FROM sx_product_category
- HAVING分组查询
SELECT id,count(1) FROM sx_product GROUP BY cate_id HAVING count( * ) > 1
- 按条件分组统计
SELECT count( CASE WHEN `id` >10 THEN 1 ELSE NULL END ) AS 'x>10', count( CASE WHEN `id` = 10 THEN 1 ELSE NULL END ) AS 'x=10', count( CASE WHEN `id` < 10 THEN 1 ELSE NULL END ) AS 'x<10' FROM sx_product_category
- 在函数、存储过程中使用游标
create procedure p2() begin declare id int; declare name varchar(15); -- 声明游标 declare mc cursor for select * from class; -- 打开游标 open mc; -- 获取结果 loop -- 循环,将表的内容都转移到class2中 fetch mc into id,name; -- 这里是为了显示获取结果 insert into class2 values(id,name); -- 关闭游标 end loop; close mc; end;
- mysql连接时乱码
Db::execute("SET NAMES utf8");
- source导入文件
source /home/abc/abc.SQL
- 判断当前是否为闰年
DELIMITER $$ DROP FUNCTION IF EXISTS `F_IS_LEAY_YEAR`$$ CREATE FUNCTION `F_IS_LEAY_YEAR`() RETURNS INT(11) BEGIN DECLARE v_year INT; -- 0:不是闰年,1:是闰年 DECLARE v_is_leay_year INT DEFAULT 0; SET v_year = DATE_FORMAT(NOW(), '%Y'); -- 普通年能被4整除且不能被100整除的为闰年(如2012年就是闰年,2013年不是闰年) -- 世纪年能被400整除的是闰年(如2000年是闰年,1900年不是闰年) IF v_year % 4 = 0 AND v_year % 100 <> 0 OR v_year % 400 = 0 THEN SET v_is_leay_year = 1; END IF; RETURN v_is_leay_year; END$$ DELIMITER ; --调用 F_IS_LEAY_YEAR()
网友评论