使用UNION的SQL查询

时间:2012-10-06 23:01:41

标签: sql-update union

我刚开始编写检查多个表的大型查询。我有这个SELECT查询,效果很好:

$result = mysql_query("SELECT * FROM companies WHERE email='$email' UNION SELECT * FROM users WHERE email='$email'") or die(mysql_error());

但是,我正在使用此UPDATE查询执行编辑页面,该查询不起作用:

$sql = mysql_query("UPDATE companies SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email' UNION UPDATE users SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email'") or die(mysql_error());

我做错了什么?

2 个答案:

答案 0 :(得分:4)

您无法将更新语句合并在一起。您只需将其拆分为单独的命令即可。或者换句话说,运行两个查询,一个用于公司,一个用于用户。

答案 1 :(得分:0)

根据您的问题,您可以使用两次更新

进行更新
$sql1="UPDATE companies SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email'";
$sql2="UPDATE users SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email";

OR

您可以选择并找到存在$ email的表格。

sql1="select name form user where email=$email "
sql2="select name form companies where email=$email "
if(count($sql1>0)){
UPDATE user SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email'
}
if(count($sql2>0)){
UPDATE companies SET name='$name',address='$address',city='$city',state='$state',zip='$zip' WHERE email='$email'
}