mysql联查时为空补全和jdbc获取最后插入生成的id

纵饮孤独 提交于 2019-12-04 23:34:56


如何在mysql里实现 oracle里的两表联查    cat.id=dog.id(+)这种 为空补全的方法
left  或者right    outer  join
想在哪个表补全 就放在 left或者 right

in查询 可以用left semi join 来代替(注意join表不能在select字段中出现)

   jdbc获取最后插入生成的id
   
    ps = conn.prepareStatement("insert into test(name) value(?)",Statement.RETURN_GENERATED_KEYS);  
    ps.setString(1, "test");  
    ps.execute();  
    rs = ps.getGeneratedKeys();  
    int id=0;//保存生成的ID  
    if (rs != null&&rs.next()) {  
        id=rs.getInt(1)  
    }

补充下  因为max(XXXX)函数在mysql里 不知为什么
当max(整形time)时候 居然返回的不是最大的那个整形时间~。~  哭死了  造成逻辑一直不对

所以 我用 order by time desc  在加上limit 0,1  这样组合获取到了最大值  
哎   那位大侠能告诉我 为什么mysql里max函数不好使。。。。。。

还有mysql查看慢查询语句


mysql的查询语句数
show global status like 'com_select';
mysql的查询连接数
show global status like 'connections';

连接到mysql的ip
netstat -an
进程号
netstat -anb

显示慢查询的次数(默认10秒)
show  status like 'slow_queries';
把慢查询的sql记录到日志中
需要在启动的时候指定慢查询
bin\mysqld.exe --safe-mode --slow-query-log   ( 高版本5.5  在my.ini指定)
bin\mysqld.exe - log-slow-queries=d:/abc.log    (低版本5.0 在my.ini指定)  
先关闭再重新启动(先停止服务)
默认吧日志文件放在my.ini里有个datadir路径下
重新设置慢查询为1秒

设置慢查询为1秒
show variables like 'long_query_time';
set long_query_time=1;


为了存储过程能正常执行,需要把命令结束符号修改为不为;
delimiter $$
修改为$$

处理多条数据的时候
set autocommit==0;
.......
commit;

存储过程里的for循环
repeat
set i=i+1;
.....
until i=max_num
end repeat;

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!