SQL

来源:互联网 发布:会计试题软件 编辑:程序博客网 时间:2024/06/12 23:11
1、 Select后的字段要么包含在Group By语句的后面,作为分组的依据;要么被包含在聚合函数中。在不使用聚合函数的时候,group by 子句中必须包含所有的列,否则会报错
(所有行全部分组虽然能成功执行,但是可以看出来group by在这里并没有发挥任何的作用,我们完全可以直接select而不用group by,所以,group by子句要配合聚合函数使用)

取出每组前三:http://blog.sina.com.cn/s/blog_4c197d420101e408.html

1、select * FROM    (select  * ,        ( SELECT    COUNT(1)          FROM      2009gkcj t2          WHERE     t1.total < t2.total                    AND t1.class = t2.class         ) AS num     FROM    2009gkcj t1) t            WHERE num<=2            ORDER BY t.class ,total desc  ;2、select a.*from 2009gkcj a left join 2009gkcj b on a.class = b.class and a.total < b.total group by a.id,a.class,a.totalhaving count(b.id) < 3order by a.class,a.total desc;3、select t1.* FROM 2009gkcj t1       where        ( SELECT    COUNT(1)          FROM      2009gkcj t2          WHERE     t1.total < t2.total                    AND t1.class = t2.class         )<3            ORDER BY t1.class ,t1.total desc  

1、SQL 模糊查询预编译的问题
like %?% sql会把?当成普通字符
正确用法为 like ?
stmt.setString(1,"%"+keyword+"%");

2、mysql远程连接授权

grant all privileges on *.* to root@'%' identified by '密码' with grant option;

flush privileges;

mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
权限1,权限2,…权限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个权限。
当权限1,权限2,…权限n被all privileges或者all代替,表示赋予用户全部权限。
当数据库名称.表名称被*.*代替,表示赋予用户操作服务器上所有数据库所有表的权限。
用户地址可以是localhost,也可以是ip地址、机器名字、域名。也可以用’%'表示从任何地址连接。
‘连接口令’不能为空,否则创建失败。


-----------

1.mysql> use mysql;   
2.mysql> GRANT ALL ON *.* TO 用户名@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;   
3.#这句话的意思 ,允许任何IP地址(上面的 % 就是这个意思)的电脑 用admin帐户  和密码(admin)来访问这个MySQL Server   
4.#必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆  

3、最大连接数  SHOW VARIABLES LIKE 'max_connections'       修改/etc/my.cnf这个文件,在[mysqld] 中新增max_connections=N

----------

4、数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes
这个问题可以有2个解决方法:1.临时修改:mysql>set global max_allowed_packet=524288000; #修改 512M
                                                2.修改my.cnf(windows下my.ini),需重启mysql。
在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):max_allowed_packet=256M (根据实际情况调整数值)
可通过命令:show VARIABLES like '%max_allowed_packet%’;查看是否成功

0 0
原创粉丝点击