如何将两个 sql 查询合二为一? [复制]
Posted
技术标签:
【中文标题】如何将两个 sql 查询合二为一? [复制]【英文标题】:how to combine the two sql queries into one? [duplicate] 【发布时间】:2012-09-20 21:42:43 【问题描述】:可能重复:“INSERT IGNORE” vs “INSERT … ON DUPLICATE KEY UPDATE”
大家好
$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';elseecho 'No';
elseecho 'user already exists!';
可以将两个查询合二为一吗?
【问题讨论】:
$user
来自哪里?
将user
列设置为UNIQUE
如果我设置 UNIQUE 列,来自 TARDIS 的 DOCTOR,值是否自动给出?我需要从 100000 到 9999999 的设置值
如果我有重复值,我需要自动设置新值 $user,如果我将使用忽略,我的行不只插入...
php.su/functions/?mysql-affected-rows
【参考方案1】:
使用这个查询。
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')
【讨论】:
插入表用户?它是什么? 对不起,只是我的错误。我已经编辑了。【参考方案2】:如果您将列 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().
【讨论】:
如果我有重复值,我需要自动设置新值 $user,如果我将使用忽略,不只插入行...如果我有重复值,我需要自动生成新值 $user。 然后插入表用户,不给自动增量字段任何值,sql会为你做这件事..或者你发布你的表结构@john 问题!我每次都说“是”。我怎么能看到user
这个值已经存在于table
中?
@JohnSmith 编辑了回复。包含mysql_affected_rows以上是关于如何将两个 sql 查询合二为一? [复制]的主要内容,如果未能解决你的问题,请参考以下文章