常用sql

记录下平时常用的sql语句,防止遗忘。

一、.当行不存在时,赋值插入行,当存在该行时,去更新某字段的值

1-1:给一个具体的值去更新

REPLACE INTO `表名` SET `字段名`= '值', `字段名`= 值

1-2:不给具体的值,希望某字段的值自增或按规律增加(必须将不允许重复的字段设置为主键)

INSERT INTO `表名`(`字段名1`, `字段名2`, `字段名n` ) VALUES('值1',值2,值3) ON DUPLICATE KEY UPDATE `字段名` = `字段名`+1

还有另外一个写法,和上面这个条语句效果是一样的

INSERT  INTO `表名` SET `字段名`= '值', `字段名`= 值,`字段名` =值 ON DUPLICATE KEY UPDATE `字段名`=`字段名`+1

二、多表联合查询

需求示例:有两张表:一张表是用户下载书本历史记录表:downloadHistory;一张表是书本详细信息表:bookInfo;

下载历史记录表有三个字段:id(主键,自增)、book_id(对应书本详细信息表中此书的id)、uid(用户唯一标识)。

现在需要一条sql语句查询出用户所有下载的书本详细信息。

SELECT `title`,//书本标题
       `author`,//书本作者
       `publisher`//出版社
  FROM `materialsBook`//书本详细信息表名
 WHERE `id` IN(//id是书本详细信息表的自增主键(唯一性)
SELECT tmp.book_id
  FROM(
SELECT `book_id`
  FROM `downloadHistory`
 WHERE `uid`= 'XXX'
 ORDER BY `id` DESC
 LIMIT 0, 10) AS tmp)

大致思路是先查询下载历史表中。此XXX用户下载的所有书本的id。这些id作为一个临时表tmp。接着再在书本详细表中根据临时表tmp中的书本id找到对应的详细书本信息。 

三、持续补充中...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值