联表查询重复字段加表前缀
$alias = 'car'; //$this->_repeating_field = ['user_id','business_code', 'employee_id']; if (!$field) { $field = "*"; } foreach ($param as $k => $li) { if (in_array($k, $this->_repeating_field)) { $where[$alias . '.' . $k] = $li; } elseif ($k) { $where[$k] = $li; } }
update/delete where in select 当in的数量过大给性能带来很大问题
联表更新
UPDATE items,month SET items.price='12' WHERE items.id=month.id; UPDATE a LEFT JOIN b on a.id=b.a_id SET a.title='aaaaa',b.body='bbbb' WHERE a.id=1
注意:多表 UPDATE 不可以使用 ORDER BY 或 LIMIT。
联表删除
从数据表t1中把那些id值在数据表t2里有匹配的记录全删除掉
DELETE t1 FROM t1,t2 WHERE t1.id=t2.id //DELETE FROM t1 USING t1,t2 WHERE t1.id=t2.id
从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉
DELETE t1 FROM t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL //DELETE FROM t1,USING t1 LEFT JOIN T2 ON t1.id=t2.id WHERE t2.id IS NULL
从两个表中找出相同记录的数据并把两个表中的数据都删除掉
DELETE t1,t2 from t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t1.id=25
注意此处的delete t1,t2 from 中的t1,t2不能是别名