
MySQL SQL语句
tobealv
这个作者很懒,什么都没留下…
展开
-
group by 的结果是得到分组的第一条记录
group by 的结果是得到分组的第一条记录,也就是只得到每分组的一条记录原创 2011-05-12 13:10:00 · 5298 阅读 · 0 评论 -
on duplicate key update
用在insert语句中。通俗的讲,用它有个前提条件:该表得有一个primary key或者unique索引,并且插入的内容包含这个字段,当插入的记录的该字段在表中已存在时,则更新存在的行,更新的内容为update后面指定的内容;如果不存在,则插入新行。 例如,如果列a被定转载 2011-03-19 09:42:00 · 144 阅读 · 0 评论 -
not exist语句
select中的not exists并不是它后面跟的语句生成一个集合,然后前面部分查出的记录进来比对.而是可以理解为前面部分每查出一条记录,就对这条记录看看它是不是不满足not exists后面的语句. 举例: select A.IP from table1 as A原创 2011-03-10 08:54:00 · 937 阅读 · 0 评论 -
更新某列的值,同时该列值被用于更新别的列
表如下:ID int auto_increment,Parent int,Child int.在同一条更新语句中,某列被更新,同时可以被别的列使用,只不过,如果该列更新在前,则后面使用它的列用的是更新后的值,如果该列更新在后,则前面使用它的列用的是更新前的值。如:insert into Depart values (NULL,1,2)// Parent = 1, C原创 2011-11-24 11:24:01 · 568 阅读 · 0 评论 -
MySQL 判断条件为真
MySQL里面没有这种 where ** == true类似的语句实际上只要where ** 就可以了,**是非0,那么条件就成立,是0条件就不成立原创 2011-11-26 11:49:29 · 2712 阅读 · 0 评论 -
mysql case when
update T_Bypass_Net set isProtect = (case isProtect when 1 then 0 when 0 then 1 end), worker = (case isProtect when 1 then '' end) where ID = 2update T_Bypass_NAC set empName = '非法IP', IP = '192.1原创 2011-07-09 10:47:58 · 698 阅读 · 0 评论 -
sql语句中的union和union all
UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。 UNION的一个限制是两个 SQL 语句所产生的栏位需要是同样的资料种类。另外,当我们用 UNION这个指令时,我们只会看到不同的资料值 (类似 SELECT DISTINCT)。 union只是将两个结果联结起来一起显示,并转载 2010-12-22 15:53:00 · 1020 阅读 · 0 评论 -
查询同时更新
update T_Log_Table as A set A.iState = 0, logout = '异常退出' where A.id = (select max(T.id) from (select * from T_Log_Table) as T where T.Acount = 'admin' and T.logIP = '192.168.1.115' and T.dateout is n原创 2012-02-23 10:05:44 · 528 阅读 · 0 评论 -
Not unique table/alias:
用mysql_real_query代替mysql_query试试原创 2012-02-27 17:28:49 · 3447 阅读 · 0 评论 -
MySQL判断字段不是NULL
is not null.原创 2012-02-20 17:13:56 · 965 阅读 · 0 评论 -
inner join的意义
通俗的讲,inner join是用来限定条件的.比如需要操作表A,但只对A中符合某条件的部分数据操作,那么这个条件就可以由inner join来提供. 举例:(1)从两个表中协作查询符合某条件的数据 select A.pcName from T_USB_Collect A inner join T_SC_UserManager B on A.pcName = B.pcNa原创 2010-11-09 09:52:00 · 2585 阅读 · 0 评论 -
在同一个表中关于 INSERT...SELECT MAX(x)+1 中引起的错(mysql)
是这样的,在一个表中有个sort(int)排序字段,每次插入数据时要求sort能自+1,效果像主键id自动加1那样。但mysql中一个有只允许主键自动+1,所以只能用sql实现。起初是这样写:insert into tt(sort,name) values(select (max(sort)+1)as sort from tt,'test_name');这是想当然的做法,肯定是不能这样转载 2013-01-28 20:22:25 · 4963 阅读 · 0 评论 -
MySQL 获取表字段的详细信息,如长度等
SELECT CHARACTER_MAXIMUM_LENGTH FROM `information_schema`.`COLUMNS` WHERE `TABLE_NAME`='表名' AND `TABLE_SCHEMA`='数据库名' AND `COLUMN_NAME`='字段名'原创 2013-01-19 15:28:59 · 4696 阅读 · 1 评论 -
父子关系表中查询某父节点的所有子节点,同时查询结果包含父节点的名字
表结构如下:CREATE TABLE `Department` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门标识', `depName` varchar(64) NOT NULL COMMENT '部门名称', `parentId` int(11) NOT NULL COMMENT '父部门标识',)查询语句为:原创 2013-01-20 16:24:33 · 4619 阅读 · 1 评论 -
在SQL语句中分条件获取数据
SELECT CASE WHEN (Id = 1) THEN 'aaa' WHEN (Id=2) THEN 'bb' WHEN(Id=3) THEN 'cc' END AS xx FROM table1 ORDER BY xx原创 2013-05-23 18:24:13 · 1007 阅读 · 0 评论 -
MySQL的count(*)比count(1)效率要高
切记,切记。。count(*)效率要比count(1)高,尤其数据量大的时候特别明显原创 2011-04-25 11:48:00 · 1029 阅读 · 0 评论 -
select ''
用单引号 '' ,而不是双引号""原创 2011-03-10 08:54:00 · 408 阅读 · 0 评论 -
mysql复制表中的记录
insert into t select * from t;原创 2011-03-11 14:01:00 · 693 阅读 · 0 评论 -
distinct
distinct 只能放在最前面原创 2011-04-26 11:06:00 · 378 阅读 · 0 评论 -
MySQL用group by获取相同值的条数
select count(1) from (select count(1) from T_SC_UserManager GROUP BY pcName) T 注:后面的临时名字T必须得有。 衍生出来的, (1)获取条数大于1的。select count(1原创 2011-04-19 14:29:00 · 2239 阅读 · 0 评论 -
left join 和 right join
sql之left join、right join、inner join的区别left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等转载 2011-03-22 09:27:00 · 491 阅读 · 0 评论 -
SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部转载 2011-03-17 10:36:00 · 602 阅读 · 0 评论 -
MySql删除重复的记录
总结1:delete user_info as a from user_info as a,(select *, min(ID) from user_info group by Name,Password having count(1) > 1) as bwh原创 2011-02-17 16:31:00 · 494 阅读 · 0 评论 -
存在于一个表而不存在于另一个表中的数据
方法1: select * from (select distinct aid from a ) as c where (select count(1) as num from b where b.bid = c.aid) = 0方法2: select c.aid from (select distinct aid from a) as c left jo原创 2011-06-20 12:01:00 · 2922 阅读 · 0 评论 -
获取ID最大的记录的信息
select ShopID from Shop where Id = (SELECT Max(Id) from Shop); 不能用Select Max(Id), ShopID from Shop,这样ShopID只得到第一条记录的。原创 2011-04-05 15:33:00 · 1233 阅读 · 0 评论 -
MySQL 复制一个字段到另一个字段
update c set caddr = cname;原创 2011-03-26 11:53:00 · 3323 阅读 · 0 评论 -
mysql 存在该记录则更新,不存在则插入记录的sql
insert into user_info (Name,Password) values('a','b') on duplicate key update Password = 'b'; 前提条件:单纯插入这条记录会造成破坏唯一性约束.唯一性约束可以使用唯一索引实现.原创 2011-02-18 17:34:00 · 460 阅读 · 0 评论 -
mysql在插入记录前先检查记录是否存在:
例子1:INSERT INTO T_File_Policy (ID,pcName) SELECT 2867, 'IBM' FROM dual WHERE not exists (select * from T_File_Policy where T_File_Policy.I原创 2010-11-19 13:53:00 · 1573 阅读 · 0 评论 -
mysql查询不重复的记录总数distinct用法
create table test(id int);OK, 0 rows affected (0.27 sec) insert into test values(1);OK, 1 row affected (0.08 sec) insert into te转载 2010-11-07 21:24:00 · 2669 阅读 · 0 评论 -
按指定排列顺序获取数据的sql语句
测试tablecreate table table1 (id int,name char)insert into table1select 1,qunion all select 2,runion all select 3,3union all select 4,5要求按指定的id顺序(比如2,1,4,3)排列获取table1的数据方法1:使用u转载 2011-06-27 11:44:00 · 2025 阅读 · 0 评论 -
mysql查询结果按指定顺序排序
select distinct A.chatType, NO_FILTRATE.empName, A.Chatting from T_NAM_ChatMonitor A, T_SC_UserManager NO_FILTRATE where A.pcName = NO_FILTR原创 2011-07-12 17:10:25 · 1210 阅读 · 0 评论 -
MySQL IFNULL中可以有select语句;查询一个表中的数据,同时查看另一个表中是否有符合条件的额数据
select A.pcName, IFNULL((select count(*) from T_ZiDongJiaMi C, T_SC_UserManager D where C.pcName = D.pcName and D.empName = 'yujh-20110314')原创 2011-05-20 15:46:00 · 2042 阅读 · 0 评论 -
MySQL复制记录
自增可以不用写,insert into tt (f1,f2) select f1,f2 from tt 注意:select后面的f1,f2不要用括号(f1,f2)原创 2011-04-21 16:29:00 · 482 阅读 · 0 评论 -
mysql 不区分大小写
Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;lower_case_table_names参数详解:lower_case_table_names = 0其中 0:区分大小写,1:不区转载 2013-07-15 16:54:50 · 870 阅读 · 0 评论