草庐IT

SELECT-INSERT

全部标签

mysql - 使用 INSERT ... SELECT 时的自动增量间隙,即使 innodb_autoinc_lock_mode = 0

即使使用,我的自动递增键也会出现间隙innodb_autoinc_lock_mode=0我将问题隔离到单个INSERT...SELECT语句。基本上,每个INSERT...SELECT语句都会将表的auto_increment递增一个即使实际上没有执行插入(重复键)。在我的例子中,我使用了INSERTIGNORE,但我没有测试,auto_increment仍然错误地递增。我担心这一点,因为这个INSERT...SELECT语句运行频率有点高,因此键会很快变大。如果没有办法,我会接受它,但是有什么办法可以避免这种行为吗? 最佳答案 这

php - mySQL 复杂的 SELECT 查询?

这是我的表结构:users:id|emailemails:id|subject|bodyuser_emails:user_id|email_id这是非常简单的设计。但是,我需要为所有users.id选择第一个(最低的)emails.id,这些id在user_emails中没有关联。举例说明:users:id|email1|email@domain.com2|test@lol.com3|user@test.comemails:id|subject|body1|sub1|body12|sub2|body2user_emails:user_id|email_id1|11|22|1如数据所示:

php - 是否可以使用 PHP "if"语句对 SELECT 查询的结果来确定是否执行 INSERT 查询会导致意外的数据重叠?

我是一名学生,这是我第一次编写软件。它是LAMP堆栈上的Web应用程序,作为该Web应用程序的一部分,我编写了以下函数以在创建新用户时与数据库交互:publicfunctionCreateUser($username,$password,$email){global$DBHandler,$SQLStatement;$SQLStatement=$DBHandler->prepare("SELECTidFROMusersWHEREusername=:usernameANDverified>0");$SQLStatement->bindParam(':username',$username)

php - 如何将带有 IF 的普通 sql select 重写为 Zend Framework select?

我有一个普通的mysqlselect,我想将它重写为ZendFrameworkmysqlselect。这是我的选择:$sql="SELECTIF(mu.recieverUserId='{$userId}',u.senderUserId,mu.recieverUserId)friend1,u.mesaj,u.senderUserId,mu.recieverUserId,u.createdFROM(SELECT*FROMmesajeORDERBY`created`desc)ASuLEFTJOIN`mesaje_utilizatori`AS`mu`ONu.id=mu.mesajIdWHERE

mysql - 简化 MySQL 嵌套 SELECT

idtitleslugsummary------------------------------1title1slug1summary12title2slug2summary23title3slug3summary34title4slug4summary4I'mtryingtoselectallfields,andinthemeanwhile,selectid,titleandslugofprev/nextrowSELECTtitle,slug,summary,idascurrent_id,(SELECTidFROMtableWHEREid查询有效,但显然这不是这样做的明智方法。有人可

MySQL全文搜索: need fast insert and fast search

我有一个mysql数据库,用户可以在其中输入文本。然后他们需要能够搜索此文本。我刚刚实现了mysql全文搜索,它确实使搜索速度快了很多。然而,毫不奇怪,它使插入变慢了。但令我惊讶的是速度慢了多少。一次插入可能需要0.5-1.5秒。该表有3个索引列:title(maxlength200)description(maxlength3000)content(maxlength10000)此时我的表中只有大约2000条记录,与以后的记录相比,这算不了什么。有什么建议吗?这个问题一般是怎么处理的?插入需要这么长时间是否正常?我不需要全文搜索的所有功能。我真的只需要AND、OR、-、+、""的等价

mysql - InnoDB : Bulk insert using transaction OR combine multiple queries?

在InnoDB中执行批量INSERT时,我应该使用事务吗STARTTRANSACTION;INSERTINTOtbl_name(a,b,c)VALUES(1,2,3);INSERTINTOtbl_name(a,b,c)VALUES(4,5,6);INSERTINTOtbl_name(a,b,c)VALUES(7,8,9);COMMITTRANSACTION;或者合并多个查询?INSERTINTOtbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9);如果重要的话,我正在使用PHP和MySQL数据库在同一台机器上。 最佳答案

mysql - 使用一个 SQL 查询进行 SELECT、UPDATE、DELETE?

我有一个递减值的小语句:UPDATEcart_itemsSETquantity=quantity-1WHEREcart_id={$cart_id}ANDid={$cart_item_id}但是如果该值在递减后变为0,SQL是否有可能删除该行?如果是这样,那么我想重新计算与该购物车匹配的行数:SELECTFROMcart_itemsWHEREcart_id={$cart_id}如果行数为零,我想从另一个表中删除该记录,如下所示:DELETEFROMcartWHEREid={$cart_id}目前似乎需要多个查询来执行此操作,但是否可以在单个SQL语句中完成所有操作?

mysql - 在 MySQL 中重用单个 SELECT 查询的结果

我有这个查询,这是一个总共包含3个SELECT的查询:SELECTaFROMtblWHEREbIN((SELECTaFROMtblWHEREb=44))ANDNOTaIN((SELECTaFROMtblWHEREb=44))查询SELECTaFROMtableWHEREb=44完全一样,我猜数据库运行了这2次,尽管由于缓存等原因第二次应该更快。在SQL或特定于MySQL的东西中,有没有一种方法可以重复使用第一个执行查询的结果的100%?或者关于如何加速此查询的任何其他想法?我正在使用MySQL5.7。 最佳答案 避免子查询并使用连接

java - 当我运行 "SELECT 0 AS COL .."时,MySQL 列类型返回 decimal 或 bigint

当我运行一个选择语句时SELECT0ASCOLFROMMYTABLE..两个不同的mysql安装返回不同的数据类型。一个返回BIGINT,第二个返回DECIMAL。对于这两种情况,jdbc驱动程序相同且com.mysql.jdbc.Driver5.1服务器版本:5.1.69-社区(返回BIGINT)5.6.31(返回十进制)是否有任何配置差异?我必须为两个安装都获得BIGINT。和mysql版本有直接关系吗? 最佳答案 你可以强制问题selectCAST(0ASUNSIGNEDINTEGER)ASCOL无符号整数在网络上显示为BIG