我知道你可以使用ON DUPLICATE KEY UPDATE来更新一个特定的值,如果这个键已经有logging的话, 我可以做这个: INSERT INTO `tableName` (`a`,`b`,`c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `a`=1, `b`=2, `c`=3 但是,我怎样才能做到这一点,而不必两次写出列和值?
我想要运行一组查询来将一些数据插入到一个SQL表中,但只有满足某些条件的logging才会被满足。 该表有4个字段: id (主), fund_id , date和price 我在查询中有3个字段: fund_id , date和price 。 所以我的查询会像这样: INSERT INTO funds (fund_id, date, price) VALUES (23, '2013-02-12', 22.43) WHERE NOT EXISTS ( SELECT * FROM funds WHERE fund_id = 23 AND date = '2013-02-12' ); 所以我只想插入数据,如果匹配的fund_id和date的logging不存在。 如果以上是正确的,那么我认为这是一个非常低效的方法,因为每次都必须运行额外的select语句。 有没有更好的方法来达到上述目的? 编辑:澄清既不fund_id也不是唯一的领域; 共享相同的fund_id或date的logging将存在,但是没有logging应该具有与另一个相同的fund_id和date。
我刚开始使用Vim作为IDE。 我现在正在使用它作为testing编辑器,所以我不必经常进入命令模式。 但是,由于我在Java中编程,所以我必须进入命令模式来创build文件,编译/运行它…等等。 问题是:我需要在两种模式之间切换的好方法。 我在网上看,它说<Esc>键应该这样做,但这不适用于我(也许这不是为gVim?我不知道为什么。) 我必须每次按CTRL O进入命令模式; 退出键从该模式工作…它使我回到插入模式。 但是,在命令模式和插入模式之间切换的方式是更好还是更简单?
我试图插入数据到另一个表的表中,并且这些表只有一列是相同的。 问题是,TABLE1有不接受空值的列,所以我不能让它们为空,我不能从TABLE2中得到它们。 我有TABLE1:id,col_1(非空),col_2(非空),col_3(非空) 和TABLE2:id,col_a,col_b,col_c 所以我怎样才能从TABLE2插入ID到TABLE1,并填写col_1-3硬编码的string,如“data1”,“data2”,“data3”? INSERT INTO TABLE1 (id) SELECT id FROM TABLE2 WHERE col_a = "something"; 将导致: 错误:列“col_1”中的空值违反了非空约束
说我有一个select SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo'; 它返回一些logging。 如何在结果集中执行插入行 INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com'); 其中@id和@customer_id是结果集中行的字段? 编辑:我不想只复制它,而是插入一个新的值,而不是domain字段。 尽pipe如此,一个facepalm的情况是很简单的;-)谢谢!
我必须使用Django的ORM将8000多条logging插入SQLite数据库。 这个操作需要每分钟大约一次的cronjob运行。 目前我正在使用for循环遍历所有项目,然后逐个插入它们。 例: for item in items: entry = Entry(a1=item.a1, a2=item.a2) entry.save() 什么是这样做的有效方式? 编辑:两个插入方法之间的一点点比较。 没有commit_manually装饰器(11245logging): nox@noxdevel marinetraffic]$ time python manage.py insrec real 1m50.288s user 0m6.710s sys 0m23.445s 使用commit_manually装饰器(11245logging): [nox@noxdevel marinetraffic]$ time python manage.py insrec real 0m18.464s user 0m5.433s sys 0m10.163s 注意:除了插入到数据库之外, testing脚本还执行一些其他操作(下载ZIP文件,从ZIP压缩文件中提取XML文件,parsingXML文件),因此执行所需的时间不一定代表插入所需的时间logging。
我正在为下表中的PRIMARY KEY执行INSERT … ON DUPLICATE KEY UPDATE : DESCRIBE users_interests; +————+———————————+——+—–+———+——-+ | Field | Type | Null | Key | Default | Extra | +————+———————————+——+—–+———+——-+ | uid | int(11) | NO | PRI | NULL | | | iid | int(11) | NO | PRI | NULL | | | preference | enum('like','dislike','ignore') | YES […]
我想要做的是INSERT订阅服务器在我的数据库,但IF EXISTS它应该UPDATE行, ELSE INSERT INTO一个新的行。 当然,我先连接到数据库,并从urlstring中GET $name , $email和$birthday 。 $con=mysqli_connect("localhost","—","—","—"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $name=$_GET['name']; $email=$_GET['email']; $birthday=$_GET['birthday']; 这工作,但只是增加了新的一行; mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES ('$name', '$email', '$birthday')"); mysqli_close($con); 这是我的尝试; mysqli_query($con,"INSERT INTO subs (subs_name, subs_email, subs_birthday) VALUES '$name', '$email', '$birthday' ON DUPLICATE […]
UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667"; 它可以工作,如果datenum存在,但我想插入这个数据作为一个新的行,如果datenum不存在。 UPDATE datenum是唯一的,但这不是主键
正如标题所说,我试图插入到一个表中select从另一个表和一些默认值的值。 INSERT INTO def (catid, title, page, publish) (SELECT catid, title from abc),'page','yes') INSERT INTO def (catid, title, page, publish) VALUES ((SELECT catid, title from abc),'page','yes')) 第一个查询给出一个mysql错误,第二个给出列数不匹配。 我需要做什么?