2016-01-13 102 views
0

我希望能够使用mysql获取mysql表中最后插入的id。使用MySQL获取最后一个插入的ID

例子:

INSERT INTO groups (name, customer_id) 
SELECT 
groups.name as name, 
'2' as customer_id 
FROM products 
LEFT JOIN groups ON products.group_id=groups.id 
WHERE customer_id=1; 

现在,我已经从一个用户选择的组并创建了一个新的群体与另一个用户相同的名字,我想所有产品都更新有新的组ID而不是旧的。

UPDATE products SET 
group_id=...last inserted id... 
WHERE customer_id=2; 

这可能只使用mysql吗?

+0

更好地包裹交易中的所有内容 –

+0

@ringø您能解释一点吗?我需要做很多这些行动。如果有方法使它更容易,我会非常想知道它们。 – Peter

+1

我相信他想说的是在插入/更新语句开始时使用'START TRANSACTION;'并以'COMMIT;'结尾# – PierreDuc

回答

2

使用LAST_INSERT_ID()

UPDATE products SET 
group_id = LAST_INSERT_ID() 
WHERE customer_id=2; 

这应该工作..

你应该使用事务,以防止INSERT如果UPDATE了问题,周围的其他方法。这有助于您的数据的完整性

START TRANSACTION; 

INSERT INTO groups (name, customer_id) 
    SELECT 
    groups.name as name, 
    '2' as customer_id 
    FROM products 
    LEFT JOIN groups ON products.group_id=groups.id 
    WHERE customer_id=1; 

UPDATE products SET 
group_id = LAST_INSERT_ID() 
WHERE customer_id=2; 

COMMIT; 
+0

谢谢!不知何故,很难找到这个。当我使用它时,我得到的只是PHP相关的方法。 – Peter

+0

@Strawberry调整了我的答案,谢谢 – PierreDuc