如果选择然后插入SQL
我想只插入一行,如果下面的SELECT返回0或没有行。如果选择然后插入SQL
喜欢的东西:
IF(SELECT为0),然后插入()
我如何在MYSQL做到这一点?
我只想做一个查询,而不是这两个查询:
$r=mysql_query("SELECT `ID`,`Country` FROM `Users` WHERE `IP`='".$ip."'",$connection);
if(!$r || mysql_num_rows($r) <= 0)
$ir=mysql_query("INSERT INTO `Users` (`IP`,`Country`) VALUES ('".$ip."','".$country."')",$connection);
我想他可能是在寻找是沿着这个答案线的东西:
https://stackoverflow.com/a/8185348
编辑: 也柜面你曾经有,你需要删除的唯一或其他方面的限制问题:
show create table <tablename>
这将显示U中创建的表的所有细节..
,那么你必须通过它有 防爆参考砸:
UNIQUE KEY <reference_name> (‘value’)
,那么你做的:
alter table <tablename> drop index <reference_name>
真,插入
IF(SELECT 1, INSERT INTO users, 0)=1
假,不要插入
IF(SELECT 0, INSERT INTO users, 0)=1
这不起作用 – Jigberto 2012-03-28 22:19:20
-
添加唯一键(如果它仍然存在)
ALTER TABLE Users ADD UNIQUE KEY (IP);
-
每当你获得新的IP /国家对执行此:
INSERT IGNORE INTO Users (IP,Country) VALUES ('1.2.3.4','Zimbabwe');
INSERT INTO users (IP,Country)
VALUES (xx, yy)
WHERE NOT EXISTS (SELECT *
FROM users nx
WHERE nx.ip = xx -- KEYFIELDS
);
对downvoter:请解释。 – wildplasser 2013-05-14 22:23:52
是否要确保某些列的唯一性?如果是这样,那么在Oracle中使用'UNIQUE' /'PRIMARY'键和'INSERT IGNORE'语句 – poncha 2012-03-28 21:20:48
这是MERGE,不确定是否支持mysql。 – Randy 2012-03-28 21:21:39
寻找['INSERT ... ON DUPLICATE KEY UPDATE'(http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html)? – Shef 2012-03-28 21:22:12