我尝试使用PROPEL ORM使用INSERT SELECT
在表格中插入一些行。我试图逐步填充表,直到复制完所有行。
$con = Propel::getConnection();
$sql = "INSERT INTO tmp_orders (id, name)
SELECT oo.id, oo.slip
FROM original_orders oo
LEFT JOIN tmp_orders tmp ON oo.id=tmp.id
WHERE tmp.id IS NULL
LIMIT 10" ;
$stmt = $con->prepare($sql);
$stmt->execute();
理想情况下,我想在循环中运行此脚本,直到复制完所有记录。一旦没有更多的记录要插入,我想停止循环。
我的初步解决方案是发出2个查询。首先从original_orders
中选择以检查选择是否不再返回数据,然后在另一个查询中执行INSERT SELECT
。
问题是查询太慢,所以我想避免做同样的选择两次只是为了看看是否有更多的数据要插入。
如果INSERT SELECT
实际插入了什么,有没有办法获得?我在运行SELECT LAST_INSERT_ID();
后尝试了INSERT SELECT
,但它始终返回0
。
答案 0 :(得分:4)