数据库小结

在最近做的项目中碰到了数据库方面的问题,对遇到的问题和处理方法做一个小总。

1.左(右)连接查询与多变联合查询的区别。

假定现在有两张表user_info和adviser_verify_info表,用户表中user_id为10000的用户在adviser_verify_info表中可能有对应的记录,也可能没有对应的记录,这是

用左连接查询:

  select user_info.`user_id`,user_info.nick_name, `adviser_verify_info`.`description` from 

      user_info left join  `adviser_verify_info` on user_info.user_id = `adviser_verify_info`.user_id where user_info.`user_id` = 10000

可以查出来一条记录。

用联合查询的方式查询:

      select user_info.`user_id`,user_info.nick_name, `adviser_verify_info`.`description` from 

        user_info,`adviser_verify_info`  WHERE user_info.`user_id` = 10000 and user_info.user_id = `adviser_verify_info`.user_id

查出来的记录数为0;

两者的目的都是通过用户表的user_id字段去关联表adviser_verify_info查询两张表中与指定的user_id对应的信息,通过比较这两种方式可以发现,当A表中有对应的记录,B表中没有对应的记录时,采用左连接查询可以查出对应的记录来,记录中包含A表中的对应信息,而采用联合查询的方式则查不出对应的记录。

联合查询只要有一张表中没有关联条件对应的记录,则无法查出记录;而连接查询则可以在其中某张表缺失关联条件对应记录的情况下查询出记录。

2.一般插入一张表中的记录数是固定的,但之前碰到了一种情况,插入某张表中的记录是不固定的,插入的记录值是从另外一张表中根据查询条件查询出来的结果:

要在user_commission_count表中插入若干条记录,这些记录的用户为在另外一张表user_commission中在满足创建按时间在某个时间段内的用户,记录数需要以来查询才能知道,这种情况下可以采用下面的写法: values采用查询的方式。

INSERT INTO user_commission_count (user_id,exchange_type,COUNT,STATUS,create_time,update_time)
SELECT distinct(user_id),'P',0,0,NOW(),NOW() FROM user_commission

WHERE  create_time BETWEEN '2018-04-01' AND '2018-04-30'




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值