【整理】mysql一些特殊情况的处理

来源:互联网 发布:低价位耳机推荐知乎 编辑:程序博客网 时间:2024/05/01 18:03

由于某度众所周知的举动,让我搬离写了5年的渣度空间,准备把技术性的文章定在CSDN了。这些都是文章备份。勿怪。。

鉴于最近有些抓取机器和抄袭者,把标题的【原】字都复制,我不得不声明:本文为 yukon12345原创,转载请注明出处http://blog.csdn.net/yukon12345

 

 

做个笔记

【1】联合查询时 想一次性查出全部字段,但是几个表中有 同名字段

先用*来查出所有字段,然后用as重命名相同字段。如下:

SELECT a.*,a.id as web_id , b.*,b.id as tech_id
FROM `s_website_monitor` AS a,`s_tech_info` AS b
WHERE a.id = b.monitor_id
LIMIT 0 , 30

 

2表相同字段id分别被重命名为web_id 和tech_id,同时又可以查出2表所有数据。

【2】Q:比如我有个type字段,想排序时候用type值排,但order by默认是值为doc比值为folder的数据行靠前(第一个英文字母),但如果我想让folder排在第一位如何?

来源:http://www.jb51.net/article/19527.htm

A:
select *
from `talbename`
order by `type`<>'folder',type DESC
或者(推荐
select *
from `talbename`
order by `type`='folder',type ASC

即可把值为folder的字段行排到最前。


而在mssql中(把id 为shanghai beijing的排在前2部分):

select id,name
from table
order by case when id like 'shanghai%' then 0 when id like 'beijing%' then 1 else 2 end
 【3】mysql_affected_rows() 仅仅返回的是被修改的行数。

如果最近一次操作是没有任何条件(WHERE)的 DELETE 查询,在表中所有的记录都会被删除,但本函数返回值在 4.1.2 版之前都为 0。

当使用 UPDATE 查询,MySQL 不会将原值与新值一样的列更新。这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。

原创粉丝点击