执行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;
//从第几页的第几个数据,到第几条数据
请注意,使用逗号时数字会反转。