如何将两个sql查询合并为一个?

时间:2012-09-29 03:05:07

标签: php mysql

  

可能重复:
  “INSERT IGNORE” vs “INSERT … ON DUPLICATE KEY UPDATE”

Hello people

$sql1="SELECT * FROM `table` WHERE `user` = '$user'";
$res1=mysql_query($sql1);
if(!$res1||mysql_num_rows($res1)<1){
$sql2="INSERT INTO `table` (`user`) VALUES ('$user')";
$res2=mysql_query($sql2);
if(!$res2){echo 'Yes';}else{echo 'No';}
}
else{echo 'user already exists!';}

可以将两个查询合并为一个吗?

2 个答案:

答案 0 :(得分:3)

使用此查询。

INSERT INTO USER SELECT * FROM TABLE WHERE user='$user'

table表和用户表中的列数必须相同,其类型也必须相同。

您也可以使用

INSERT into user
SELECT * from table 
WHERE user='$user'
AND 
   NOT EXISTS (SELECT * FROM USER 
              WHERE USER = '$user')

答案 1 :(得分:3)

如果您将列user设置为 UNIQUE ,则每个用户最多只能有 ONE 条目。要ALTER TABLE并列UNIQUE列:

ALTER TABLE `table`
    ADD UNIQUE INDEX `user` (`user`);

然后,像这样的单个查询会很好:

$res = mysql_query("INSERT IGNORE INTO `table`(`user`) VALUES( '".mysql_real_escape_string($user) . "')";
echo ( mysql_affected_rows() == 0 ) ? "No" : "Yes";

mysql_affected_rows()