我知道你可以一次插入多行,有没有办法在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) 我正在尝试完成此查询; 我的标记字段设置为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) 我正在insert ignore into........使用Python 在mysql中运行查询
运行查询后,我想知道该行的主键.我知道有查询
SELECT LAST_INSERT_ID();
Run Code Online (Sandbox Code Playgroud)
但我不确定它是否适用于插入忽略
做这个的最好方式是什么?
在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 insert ignore和replace订单之间的性能是否存在差异.
我正在使用MySQL 5.0.31.我的所有表都在InnoDB中.
我正在寻找一个标准的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)
任何的想法?
这可能是一种常见情况,但我无法在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亿行或更高(我希望它很快),这种技术可能会变得非常慢.
维护这个独特的桌子的最佳(即最快)方法是什么?
我不需要总是只有一个只有唯一值的表.我只需要每天一次的批处理作业.在这种情况下,我应该创建一个单独的表,只插入所有可能的行(包含重复的行和所有行),然后在一天结束时,创建第二个表来计算第一个表中的所有唯一行?
如果没有,这个表长期的最佳方式是什么?
(如果索引是最好的长期解决方案,请告诉我使用哪些索引)
有这张桌子.
| id | domain |
Run Code Online (Sandbox Code Playgroud)
id是主键.domain是一个独特的钥匙.
我想要:
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.
但关键是这个速度尽可能快,所以我会问:我可以用更好的方式做到这一点吗?
我有一个有3列的表.每个都有一个独特的索引.
我想一次做多个插入(300个记录弹出).当出现重复条目时,它会完全取消插入.这意味着如果300中的1个是重复的,则不会插入任何一个.
有没有解决的办法?
一直在网上浏览一段时间,似乎没有能够遇到任何类似于我想要的东西.我知道这与我编写查询的方式有关,但任何帮助都会受到赞赏.
我想要做的基础是:
它以以下格式存在:
名称,条形码,项目,数量,位置,价格和日期
名称 - 可用于多行条形码 - 用于特定项目但可用作多个位置项目 - 与条形码相同但包含名称数量 - 自解释位置 - 这可以是不同的位置价格 - 附加到特定项目日期 - 上次购买该项目的时间
棘手的是,"名称"可以在不同的位置有几个项目(条形码和项目),价格不同.我们的想法是,客户可以看到他们在一定时间内购买了多少物品,因此他们知道他们需要多少钱来销售它.
然而,他们购买它的价格可能会有所不同,因此如果价格与之前的购买价格不同,他们需要在表格中创建另一行.
整个事情背后的想法是它记录每个位置的每个项目的"名称"有多少,然后记录他们上次购买时的价格.
希望有道理.
在伪代码中:
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 ×10
sql ×3
sql-update ×2
database ×1
duplicates ×1
hsqldb ×1
insert ×1
large-data ×1
lastinsertid ×1
optimization ×1
pdo ×1
performance ×1
upsert ×1