我想只插入一行,如果以下SELECT返回0或没有行。
类似的东西:
IF(SELECT IS 0)然后INSERT()
如何在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);
答案 0 :(得分:1)
我认为他可能正在寻找的是这个答案:
https://stackoverflow.com/a/8185348
编辑: 如果您需要删除唯一性或其他约束,也会遇到问题:
show create table <tablename>
这将显示已创建表格的所有详细信息..
然后你必须通过它的引用删除 例如:
UNIQUE KEY <reference_name> (‘value’)
所以你这样做:
alter table <tablename> drop index <reference_name>
答案 1 :(得分:0)
是的,插入
IF(SELECT 1, INSERT INTO users, 0)=1
错误,请勿插入
IF(SELECT 0, INSERT INTO users, 0)=1
答案 2 :(得分:0)
添加唯一键(如果它仍然不存在)
ALTER TABLE Users ADD UNIQUE KEY (IP);
每当您获得新的IP /国家/地区时,请执行以下操作:
INSERT IGNORE INTO Users (IP,Country) VALUES ('1.2.3.4','Zimbabwe');
答案 3 :(得分:-1)
INSERT INTO users (IP,Country)
VALUES ( xx, yy)
WHERE NOT EXISTS ( SELECT *
FROM users nx
WHERE nx.ip = xx -- KEYFIELDS
);