select * from gift_trade where pay_customer_id = 86791532 or gain_customer_id = 86791532 and create_time > '2018-04-01 00:00:00' and create_time < '2018-05-01 00:00:00'>
— 以下sql会只查询出 4月份的记录
1 2 3 4
select * from gift_trade where( `created_date`> '2018-04-01 00:00:00' and `created_date` < '2018-05-01 00:00:00') and (gain_customer_id = 86791532 or pay_customer_id = 86791532 )
– join
join = inner join
and 等于 inner join
mysql join 之后是乘积
innner join 时必须字段在多个表都存在才有数
只要join的字段是唯一索引, 就不用担心重复
使用join on 为表建立别名, on 字段时要引用字段对应表的别名
– left join
以左边为准, 但是如果右边有where语句, 应该是在 join后再走的where
比如如下的只会查出所有ac.certification_status IN (0,2), 而不是所有左边的
1 2 3
DELETE FROM `reward` WHERE `customer_id` IN (SELECT * FROM (SELECT r.`customer_id` FROM `reward` r LEFT JOIN `action_certification` ac on r.`customer_id` =ac.`customer_id` WHERE ac.`certification_status` IN (0,2)) a);