2013年8月

[转载]MySQL 中将一个表的数据插入另外一个表的方法

参考地址: MySQL 中将一个表的数据插入另外一个表的方法

如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:

INSERT INTO 目标表 SELECT  * FROM 来源表;

比如要将 articles 表插入到 newArticles 表中,则是:

INSERT INTO newArticles SELECT  * FROM articles;

如果只希望导入指定字段,可以用这种方法:

INSERT INTO 目标表 (字段1, 字段2, ...) SELECT  字段1, 字段2, ...  FROM 来源表;

注意字段的顺序必须一致。

[转载]如何查看某个文件在哪个软件包(rpm)中

参考链接: 如何查看某个文件在哪个软件包中?

我们在Linux中安装软件包时,经常会有缺少某个依赖文件而无法继续。用yum provides可以查看某个文件是包含在哪个软件包中,例如,要查看libstdc++.so.5是属于哪个软件包中,方法如下:

$ yum provides libstdc++.so.5

结果如下:

compat-libstdc++-33-3.2.3-63.i386 : 兼容的标准 C++ 库

非常有用。

另外,如果你想查看本机上已经安装的文件是属于哪个RPM软件包中,还可以用以下方法:

$ rpm -qf /usr/lib/libstdc++.so.6
libstdc++-4.3.0-8.i386

[记录]让Samba支持软连接

参考地址: 让Samba支持软连接,方便开发的实践操作。

家里的系统由centos6换成linuxmint(实在是好用才换)了, 重新配置好samba后,发现里面的一个软链接到pt下载目录的目录不能访问。

测试半天,chcon, chmod, chown,不行,仔细一想,应该是samba下软链接支持问题了,google后,解决,方案如下, 在smb.conf增加以下三行

wide links = yes  
follow symlinks = yes  
unix extensions  = no 

重启smbd服务即可。

[记录]mysql的in查询, 查询结果按in集合顺序显示

需求来自, 某些特定场景, 比如人工推荐, 编辑后台输入一串id, 前台需要按输入的id顺序显示.

mysql 的in语法如下:

SELECT * FROM `single` WHERE `single_id` IN ('987', '256', '381', '586');

正常情况下, 取出的数据, 会按照 256, 381, 586, 987排序, 而我需要的是987, 256, 381, 586.

所以需要对sql进行改造:

SELECT * FROM `single` WHERE `single_id` IN ('987', '256', '381', '586') ORDER BY FIELD (`single_id`, '987', '256', '381', '586'); 

这样就会按照in集合的顺序返回, 但是同时也带来一个问题:EXPLAIN会发现Using filesort, 大多数情况下这是sql语句性能低下的代表, 所以建议非特殊场景不要使用, 至于真正损失的性能, 有待测试.

另外, 也可以直接IN, 然后程序排序, 谁的综合效率谁更高呢??? 同样有待测试.