如果选择则插入SQL

时间:2012-03-28 21:18:29

标签: mysql

我想只插入一行,如果以下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); 

4 个答案:

答案 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)

  1. 添加唯一键(如果它仍然不存在)

    ALTER TABLE Users ADD UNIQUE KEY (IP);

  2. 每当您获得新的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
   );