MySQL语法总结

执行update更行语句时遇到的一个大坑!!!!

update(save)操作  返回值(成功:影响行数,可能为0; 失败:false)

 

带筛选条件的多个表的左连接查询(判空)

SELECT b.prjname,c.`name` ,d.`name` as ownername,a.* FROM tbl_prjentrust  as a 
            LEFT JOIN tbl_projects as b on a.prjguid = b.prj_guid  
            LEFT JOIN tbl_user as c on a.targetid = c.user_guid   
            LEFT JOIN tbl_user as d on a.ownerid = d.user_guid
            where a.prjguid='$prjguid' and a.ownerid='$myguid' and a.deleted_at is NULL

创建各个表的初始及当前id表,用于获取某个表的当前id,计算下个id

CREATE TABLE `sys_singleid` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `minval` int(11) NOT NULL,
  `num` int(11) NOT NULL,
  `fieldname` varchar(100) NOT NULL,
  `tablename` varchar(100) NOT NULL,
  `remark` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

获取key的存储过程

CREATE PROCEDURE GETKEY(IN tablename_in varchar(100),IN fieldname_in varchar(100),OUT num_out INT,IN minval_in INT)
BEGIN
	SELECT num INTO num_out FROM sys_singleid WHERE tablename=tablename_in AND fieldname=fieldname_in;
	IF ISNULL(num_out) THEN
	SET num_out=minval_in;
	INSERT INTO sys_singleid (minval,num,fieldname,tablename,remark) VALUES(minval_in,minval_in,fieldname_in,tablename_in,'新Key自动添加');
	ELSE
	SET num_out=num_out+1;
	UPDATE sys_singleid SET num=num_out WHERE tablename=tablename_in AND fieldname=fieldname_in;
	END IF;
	SELECT num_out;
END;

批量添加公共字段属性

/*添加公共属性*/

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `status` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `Checkuid` datetime NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `checked` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `Checktime` datetime NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `Deleteuid` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `deleted` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `deleted_at` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `creator` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `creatime` datetime NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `modifier` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `moditime` datetime NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `enabled` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `rowid` int NULL ;

ALTER TABLE `tbl_prjstatus` 
ADD COLUMN `synguid` int NULL ;

限制MySQL数据库中的数据选择

MySQL提供了一个LIMIT子句,用于指定要返回的记录数。

LIMIT子句可以轻松编写多页结果或SQL分页,并且对大型表非常有用。返回大量记录会影响性能。

假设我们希望从名为“Orders”的表中选择1 - 30(包括)的所有记录。SQL查询将如下所示:

$sql = "SELECT * FROM Orders LIMIT 30";

当运行上面的SQL查询时,它将返回前30条记录。

如果我们想选择16-25(包括)的记录怎么办?

Mysql还提供了一种处理方法:使用OFFSET。

下面的SQL查询说“只返回10条记录,从记录16开始(OFFSET 15)”:

$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

您还可以使用更短的语法来实现相同的结果:

$sql = "SELECT * FROM Orders LIMIT 15, 10";


//用sql分页
sql += " limit " + (pageNo - 1) * pageSize + "," + pageSize;  
//从第几页的第几个数据,到第几条数据
				

请注意,使用逗号时数字会反转。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值