相关疑难解决方法(0)

MySQL中的多个更新

我知道你可以一次插入多行,有没有办法在MySQL中一次更新多行(如在一个查询中)?

编辑:例如我有以下内容

Name   id  Col1  Col2
Row1   1    6     1
Row2   2    2     3
Row3   3    9     5
Row4   4    16    8
Run Code Online (Sandbox Code Playgroud)

我想将以下所有更新组合到一个查询中

UPDATE table SET Col1 = 1 WHERE id = 1;
UPDATE table SET Col1 = 2 WHERE id = 2;
UPDATE table SET Col2 = 3 WHERE id = 3;
UPDATE table SET Col1 = 10 WHERE id = 4;
UPDATE table SET Col2 = 12 WHERE id = 4;
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-update

363
推荐指数
8
解决办法
36万
查看次数

重复键忽略?

我正在尝试完成此查询; 我的标记字段设置为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万
查看次数

mysql - 插入后忽略获取主键

我正在insert ignore into........使用Python 在mysql中运行查询

运行查询后,我想知道该行的主键.我知道有查询

SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)

但我不确定它是否适用于插入忽略

做这个的最好方式是什么?

mysql

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

MYSQL是否会在更新时覆盖相同值的列?

在mysql中更新表时,例如:

user

user_id | user_name

1         John
2         Joseph
3         Juan
Run Code Online (Sandbox Code Playgroud)

如果我运行查询

UPDATE `user` SET user_name = 'John' WHERE user_id = 1
Run Code Online (Sandbox Code Playgroud)

MYSQL会再次写入相同的值还是忽略它,因为它是相同的内容?


这是我提出的一个问答问题,因为Stack Overflow鼓励它,我认为对于具有相同问题的同事程序员来说,它将来会有所帮助.

mysql sql-update

19
推荐指数
1
解决办法
6682
查看次数

在MySQL中"插入忽略"和替换之间的性能差异是什么?

我想知道MySQL insert ignorereplace订单之间的性能是否存在差异.

我正在使用MySQL 5.0.31.我的所有表都在InnoDB中.

mysql

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

SQL标准UPSERT调用

我正在寻找一个标准的SQL" UPSERT"语句.如果存在,则插入和更新一次调用.

我正在寻找一个有效,高效的跨平台电话.

我见过MERGE,UPSERT,REPLACE,INSERT .. ON DUPLICATE UPDATE但没有声明满足需求.

顺便说一句,我使用MYSQL和HSQLDB进行unitests.我知道HSQLDB是有限的,可能无法满足我的需求,但即使没有它,我也找不到标准的方法.现在只有MYSQL和HSQLDB才足够的声明.

我一直在寻找一段时间,但无法得到答案.

我的桌子:

CREATE TABLE MY_TABLE (
  MY_KEY varchar(50) NOT NULL ,
  MY_VALUE varchar(50) DEFAULT NULL,
  TIME_STAMP bigint NOT NULL,
  PRIMARY KEY (MY_KEY)
);
Run Code Online (Sandbox Code Playgroud)

任何的想法?

mysql sql upsert hsqldb

8
推荐指数
2
解决办法
7402
查看次数

在MySQL中维护一个包含唯一值的大表

这可能是一种常见情况,但我无法在SO或Google上找到具体答案.

我在MySQL数据库上有一个大表(> 1000万行)的朋友关系非常重要,需要维护,以便没有重复的行.该表存储用户的uid.该表的SQL是:

CREATE TABLE possiblefriends(
 id INT NOT NULL AUTO_INCREMENT, 
 PRIMARY KEY(id),
 user INT, 
 possiblefriend INT)
Run Code Online (Sandbox Code Playgroud)

该表的工作方式是每个用户有大约1000个"可能的朋友"被发现并需要存储,但需要避免重复的"可能的朋友".

问题是,由于程序的设计,在一天的过程中,我需要向表中添加100万行或更多行,这些行可能是或不是重复的行条目.简单的答案似乎是检查每一行以查看它是否重复,如果没有,则将其插入表中.但是随着表格大小增加到1亿行,10亿行或更高(我希望它很快),这种技术可能会变得非常慢.

维护这个独特的桌子的最佳(即最快)方法是什么?

我不需要总是只有一个只有唯一值的表.我只需要每天一次的批处理作业.在这种情况下,我应该创建一个单独的表,只插入所有可能的行(包含重复的行和所有行),然后在一天结束时,创建第二个表来计算第一个表中的所有唯一行?

如果没有,这个表长期的最佳方式是什么?

(如果索引是最好的长期解决方案,请告诉我使用哪些索引)

mysql large-data

6
推荐指数
1
解决办法
1390
查看次数

最快的插入方式,如果不存在,则在MySQL中获取id

有这张桌子.

| id | domain |
Run Code Online (Sandbox Code Playgroud)

id是主键.domain是一个独特的钥匙.

我想要:

  1. 如果新域已不存在,请插入新域.
  2. 获取该id域名.

现在我这样做:

INSERT INTO domains
SET domain = 'exemple.com'
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)
Run Code Online (Sandbox Code Playgroud)

然后PDO::lastInsertId()得到id.

但关键是这个速度尽可能快,所以我会问:我可以用更好的方式做到这一点吗?

mysql optimization performance pdo lastinsertid

6
推荐指数
1
解决办法
2249
查看次数

当不允许重复时,MySQL多次插入.

我有一个有3列的表.每个都有一个独特的索引.

我想一次做多个插入(300个记录弹出).当出现重复条目​​时,它会完全取消插入.这意味着如果300中的1个是重复的,则不会插入任何一个.

有没有解决的办法?

mysql insert duplicates

6
推荐指数
1
解决办法
1208
查看次数

MYSQL INSERT或UPDATE IF

一直在网上浏览一段时间,似乎没有能够遇到任何类似于我想要的东西.我知道这与我编写查询的方式有关,但任何帮助都会受到赞赏.

我想要做的基础是:

  • 如果某些项不存在,请将其插入表中
  • 更新项目(如果存在)

它以以下格式存在:

名称,条形码,项目,数量,位置,价格和日期

名称 - 可用于多行条形码 - 用于特定项目但可用作多个位置项目 - 与条形码相同但包含名称数量 - 自解释位置 - 这可以是不同的位置价格 - 附加到特定项目日期 - 上次购买该项目的时间

棘手的是,"名称"可以在不同的位置有几个项目(条形码和项目),价格不同.我们的想法是,客户可以看到他们在一定时间内购买了多少物品,因此他们知道他们需要多少钱来销售它.

然而,他们购买它的价格可能会有所不同,因此如果价格与之前的购买价格不同,他们需要在表格中创建另一行.

整个事情背后的想法是它记录每个位置的每个项目的"名称"有多少,然后记录他们上次购买时的价格.

希望有道理.

在伪代码中:

    Insert into table if does not exist
    - name, barcode, item, quantity, location, price and date
    If name, barcode, item, location and price are the same
    - Update quantity and date (if more recent)
Run Code Online (Sandbox Code Playgroud)

mysql sql database

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