mysql建立函数是报错Error 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA

在mysql建立函数时报错:
Error 1418: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
解决办法:

SET @@global.log_bin_trust_function_creators='ON';
SHOW VARIABLES LIKE 'log_bin_trust_function_creators';



在mysql中执行,然后重新建立函数




MySQL通过自定义函数实现根据父级PID递归查询所有子级ID集合

CREATE FUNCTION `getGroupCID`(pid varchar(5000)) RETURNS VARCHAR(5000)
DETERMINISTIC
BEGIN
  DECLARE children VARCHAR(5000);
  SELECT group_concat(id) INTO children FROM group_info WHERE FIND_IN_SET(group_info.pid, pid);
  IF children ……

                    
                

MySQL通过自定义函数实现根据子类ID递归查询父级PID集合

DELIMITER $$
 
CREATE FUNCTION `getParent`(n INT) RETURNS VARCHAR(255)
BEGIN
  DECLARE parent VARCHAR(2555);
  SELECT parent_id INTO parent FROM your_table WHERE id = n;
  IF parent IS NOT NULL THEN
 ……

                    
                

mysql sum null 转为0

1、select isnull(sum(count),0) coinNum from table
2、select coalesce(sum(count),0) coinNum from table



mysql判断时间是否是当天,昨天,近一星期,近一个月

今天  
select * from 表名 where to_days(时间字段名) = to_days(now());  
昨天  
SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1  
7天  
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)  
近30天  
SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY)……

mysql中insert into select from的使用

如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:
  1.         INSERT INTO db1_name(field1,field2) SELECT field1,field2 FROM db2_name
    当然,上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再select from就可以了:
  2.  &n……
    
                        
                    

mysql中find_in_set()函数的使用

首先举个例子来说: 
有个文章表里面有个type字段,它存储的是文章类型,有 1头条、2推荐、3热点、4图文等等 。
现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储。那我们如何用sql查找所有type中有4的图文类型的文章呢?? 
这就要我们的 find_in_set 出马的时候到了。以下为引用的内容:
select * from article where FIND_IN_SET('4',type)
---------------------------------------------------------- 
MySQL手册中find_in_set函数的语法:
FIN……

mysql将查询的ID单列结果集拼成一行字符串用逗号分隔

MySQL的sql语句有好多可以省去服务器端的复杂处理,比如mysql将查询的单列结果集拼成一行字符串用逗号分隔

group_concat

这玩意儿可以实现  将一个字段如id查询出来   成为这样的格式:121,122,123,124,125,126

select group_concat(id) as nids from 表名             搞定




© 2016-2024 阿尔佛 aerfo.com | 豫ICP备17044542号 | 豫公网安备 41010602000172