相关疑难解决方法(0)

MySQL:如果表中不存在则插入记录

我正在尝试执行以下查询:

INSERT INTO table_listnames (name, address, tele)
VALUES ('Rupert', 'Somewhere', '022')
WHERE NOT EXISTS (
    SELECT name FROM table_listnames WHERE name='value'
);
Run Code Online (Sandbox Code Playgroud)

但这会返回错误.基本上我不想插入记录,如果记录的'name'字段已存在于另一条记录中 - 如何检查新名称是否唯一?

mysql

356
推荐指数
11
解决办法
64万
查看次数

重复键忽略?

我正在尝试完成此查询; 我的标记字段设置为UNIQUE,我只是希望数据库忽略任何重复的标记.

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY IGNORE '*the offending tag and carry on*'
Run Code Online (Sandbox Code Playgroud)

甚至这是可以接受的

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE '*the offending tag and carry on*'
Run Code Online (Sandbox Code Playgroud)

mysql

152
推荐指数
2
解决办法
17万
查看次数

如何使用postgresql模拟"插入忽略"和"重复密钥更新"(sql merge)?

某些SQL服务器具有一个功能,INSERT如果它违反主/唯一键约束,则跳过该功能.例如,MySQL有INSERT IGNORE.

什么是模仿的最好方式INSERT IGNORE,并ON DUPLICATE KEY UPDATE与PostgreSQL的?

database postgresql rules

129
推荐指数
9
解决办法
11万
查看次数

IF语句中的MYSQL SELECT

这是一个如此简单的问题,但我没有在任何地方找到答案2小时.

你如何使用MYSQL IF语句.无论我放入什么都行不通.在SQL Server中,这是一个5秒的工作.

是否需要在程序中?

你能在IF语句中使用SELECT吗?

这里对IF函数不太感兴趣.

谢谢你的帮助.

mysql sql if-statement

22
推荐指数
4
解决办法
5万
查看次数

插入查询检查是否存在记录 - 如果不存在,请插入它

我有一个mysql表ip_list...

+----+---------------+
| id |    ip_addr    |
+----+---------------+
|  1 | 192.168.100.1 |
|  2 | 192.168.100.2 |
|  3 | 192.168.100.3 |
|  4 | 192.168.100.4 |
|  5 | 192.168.100.5 |
+----+---------------+
Run Code Online (Sandbox Code Playgroud)

我想只添加不在ip_addr列中的记录. 对于前者

我有以下记录添加到ip_addr表中

192.168.100.6
192.168.100.10
192.168.100.11
192.168.100.1   //already in column
192.168.100.12
Run Code Online (Sandbox Code Playgroud)

我不想添加192.168.100.1,因为它已经在列中.

那么,INSERT查询是否有可能首先检查记录然后插入它?

目前,我正在这样做..首先我SELECT记录然后匹配它然后INSERT它.

但是,我只想做一个查询.

php mysql sql sql-insert

19
推荐指数
3
解决办法
2万
查看次数

MySQL使用WHERE子句直接INSERT INTO

我试着谷歌搜索这个问题,但只找到如何使用两个表,如下所示,

INSERT INTO tbl_member
SELECT Field1,Field2,Field3,... 
FROM temp_table
WHERE NOT EXISTS(SELECT * 
         FROM tbl_member 
         WHERE (temp_table.Field1=tbl_member.Field1 and
               temp_table.Field2=tbl_member.Field2...etc.)
        )
Run Code Online (Sandbox Code Playgroud)

这适用于一种情况,但现在我的兴趣是直接从程序本身上传数据而不使用两个表.我想要的是上传不在表中的数据.我脑子里的sql就像下面那样,

INSERT INTO tbl_member (SensorIdValue, DataTimeValue, DataInValue, IncompleteValue, SpiValue, InfoValue)
VALUES ('Sensor.org', '20121017150103', 'eth0','','','')
WHERE (SensorIdValue != 'Sensor.org'AND DataTimeValue != '20121017150103'AND DataInValue != 'eth0'AND IncompleteValue != ''AND SpiValue != ''AND InfoValue != '');
Run Code Online (Sandbox Code Playgroud)

但这是错的..我可能知道这样做的正确方法,非常感谢:)

mysql insert where-clause

10
推荐指数
3
解决办法
11万
查看次数

如何通过选择插入时插入表格之前如何检查重复项

如何通过选择插入时插入表格之前如何检查重复项:

insert into table1
select col1, col2 
from table2
Run Code Online (Sandbox Code Playgroud)

我需要检查table1是否已经有一行table1.col1.value = table2.col1.value,如果是,则从插入中排除该行.

sql t-sql sql-server sql-server-2005 sql-server-2008

9
推荐指数
1
解决办法
3万
查看次数

慢MySQL插入

我正在使用和使用MySQL作为后端引擎的软件(它可以使用其他如PostgreSQL或Oracle或SQLite,但这是我们正在使用的主要应用程序).该软件的设计方式使得我们要访问的二进制数据在各列中保持为BLOB(每个表有一个BLOB列,其他列有整数/浮点数来表征BLOB,另一列有BLOB的字符串列)MD5哈希).这些表通常有2,3或4个索引,其中一个索引始终是MD5列UNIQUE.有些表已经有数百万个条目,并且它们已经输入了数千兆字节的大小.我们在同一台服务器中保留了每年独立的MySQL数据库(到目前为止).对于一般应用程序(Dell PowerEdge 2U格式服务器),硬件非常合理(我认为).

MySQL SELECT查询相对较快.那里几乎没有抱怨,因为这些是(大部分时间)处于批处理模式.但是,INSERT查询需要很长时间,随着表大小(行数)的增加而增加.不可否认,这是因为MD5列是类型的UNIQUE,因此每个INSERT都必须弄清楚每个新行是否具有相应的,已经插入的MD5字符串.如果有其他索引(不是唯一的),如果性能变差,那就不奇怪了(我认为).但是我仍然不能放下心来这个软件架构的选择(我怀疑BLOB在表行而不是磁盘中有显着的负面影响)并不是最好的选择.插入并不重要,但这是一种烦人的感觉.

有没有人有类似情况的经验?使用MySQL,甚至是其他(最好是基于Linux的)RDBM?你想提供的任何见解,也许是一些表现数据?

顺便说一句,工作语言是C++(它包含C调用MySQL的API).

mysql database indexing performance insert

7
推荐指数
2
解决办法
2万
查看次数

将PHP数组中的唯一值插入SQL表

可能重复:
如何在MySQL中"插入,如果不存在"?

有SQL表:

CREATE TABLE IF NOT EXISTS `MyTable` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `MyVar` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`id`)
) 
Run Code Online (Sandbox Code Playgroud)

并且有两个PHP数组arr1[]=array("abc","bcd")arr2[]=array("abc","cde").

假设我已将arr1 []值保存到SQL表中.现在让我们假设我需要将arr2 []值保存到同一个SQL表中.我需要编写哪个SQL INSERT查询以避免重复保存"abc"条目?结果必须是:

MyTable:
1  |  abc
2  |  bcd
3  |  cde
Run Code Online (Sandbox Code Playgroud)

但不是:

MyTable:
1  |  abc
2  |  bcd
3  |  abc
4  |  cde
Run Code Online (Sandbox Code Playgroud)

更新:也许应该以这样的方式创建/定义MyTable,以便忽略重复的条目?

php sql insert

5
推荐指数
2
解决办法
1587
查看次数

PHP/MySQL:如果不存在则插入记录

$sql = "INSERT INTO toplist 
       (serverName, serverPassword, serverIp, serverPort, serverBanner,
        serverShortDescription, serverDescription)
       VALUES
       ('$_POST[serverName]', '$_POST[serverPassword]', '$_POST[serverIp]',
        '$_POST[serverPort]', '$_POST[serverBanner]', 
        '$_POST[serverShortDescription]', '$_POST[serverDescription]')";

if (!mysql_query($sql, $con)) {
    die('Error: ' . mysql_error());
}

echo "The server " . $_POST[serverName] . "," . $_POST[serverIp] 
    . " has been added.";

mysql_close($con);
Run Code Online (Sandbox Code Playgroud)

我怎样才能这样做,如果条目"serverIp"尚不存在,它将把它添加到数据库,如果它已经存在,那么它什么都不做.此外,这也是区分大小写的吗?你是否可以绕过它,因为它有什么好处?

php mysql

4
推荐指数
1
解决办法
388
查看次数