我有一个更新查询,它更新了2个表,其中一个表用不同的别名复制。引擎是MySQL。如果我单独运行这三个查询,它们可以正常工作,但是如果我将它们全部放在一个查询中,它就会失败。
这是查询:
UPDATE
users AS u1,
users AS u2,
customer AS c
SET
u1.`active` = '1',
u2.`address` = 'something 234',
c.`status` = '3'
WHERE
(u1.`user_name` = 'Tomas'
AND u1.`user_lastname` = 'Smith'
AND u1.`user_middle` = 'Nikolas')
AND (u2.`user_type` = '5'
AND u2.`user_email` = 'an_email@gmail.com'
AND u2.`register_date` = 'some_date')
AND c.`id` = '8';
如果我单独运行查询,那么用户表更新不会更新任何行(没关系),而客户只更新一行(也没关系)。
我期待只在一个查询中完成所有操作而不是三个查询。
这三个查询如下所示:
UPDATE users AS u1 SET u1.`active` = '1' WHERE u1.`user_name` = 'Tomas' AND u1.`user_lastname` = 'Smith' AND u1.`user_middle` = 'Nikolas';
UPDATE users AS u2 SET u2.`address` = 'something 234' WHERE u2.`user_type` = '5' AND u2.`user_email` = 'an_email@gmail.com' AND u2.`register_date` = 'some_date';
UPDATE customer AS c SET c.`status` = '3' WHERE c.`id` = '8';
我希望所有这些都在我之前向您展示的一个查询中。这些查询之间没有任何关系,只是我想一次性运行以进行改进的不同查询。
我不知道是否可能。
感谢您阅读我的问题。
答案 0 :(得分:1)
mysql_query
(已弃用!)或mysqli::query
等函数不支持多个语句。
你需要mysqli::multi_query
这样的东西。
答案 1 :(得分:0)
我认为您无法使用一个查询更新多个表。仅在一个表more to that here中允许唯一的多个更新命令(完全读取以加速它)
答案 2 :(得分:0)
每个查询似乎都有自己的WHERE
条件 - 我不认为将它们组合在一起会起作用,因为所有条件都必须为真,才能更新每一行。
此外,我没有看到这提供任何接近足够的性能改进,以保证这个代码将变得不可行/不合逻辑。我绝对建议将这些作为单独的查询。