草庐IT

select-query

全部标签

mysql - Select Projections.constructor 中的子查询

像这样尝试在带有投影的Select子句中编写子查询queryFactory.query().select(Projections.constructor(MemberPaymentDTO.class,JPAExpressions.select(coopMember).from(coopMember).where(memberPayment.memberId.eq(coopMember)).fetchOne(),JPAExpressions.select(paymentTransaction.amount).from(paymentTransaction).where(paymentTr

java - TOP [N] 记录 Group By per user query in the best possible way

我今天遇到了一个有趣的问题:让我们假设以下条件1。有n个用户2。系统会收集每个司机移动时的GPS坐标3。我们必须查询每个用户的最后10条GPS坐标记录,按LAST_UPDATE_DATE降序排列4。表中有超过1982008条记录我通过查询最后的{(10+[thresholdvalue])*n}记录解决了这个问题,并使用HashMap在java中排列它们,其中用户是Key,各个坐标的列表是值(value)观这似乎不是最佳解决方案,因为它可能会选择随机记录并且可能不会覆盖每个用户的10条记录,在for循环中按用户查询也不是最佳解决方案,因为它需要多次数据库调用任何人都可以建议使用Sprin

mysql - "SELECT ... FOR UPDATE"不适用于 Hibernate 和 MySQL

我们有一个系统,我们必须在一个实体中使用悲观锁定。我们正在使用hibernate,所以我们使用LockMode.UPGRADE。但是,它不会锁定。表是InnoDB我们已检查锁定在数据库(5.0.32)中是否正常工作,所以这个错误http://bugs.mysql.com/bug.php?id=18184好像没问题。我们已检查数据源是否包含autoCommit=false参数。我们检查过SQLhibernate(版本3.2)生成的包含“FORUPDATE”。谢谢, 最佳答案 我遇到了非常相似的事情。我在Spring中使用@Transa

mysql - MyISAM Selects 锁仅在过程内部插入

我们有一个大型MyISAM表,其中的行仅插入到表的底部。在做一些基准测试时,我意识到选择不会(总是)将其他插入锁定到同一个表。但是,当插入来自存储过程/函数时,它们将被选择锁定。这是为什么?演示此行为:CREATETABLEFoo(IDINTNOTNULLAUTO_INCREMENT,BarVARCHAR(200),PRIMARYKEY(ID))ENGINE=MyISAM;--INSERTintoFoo10MrowsDELIMITER$$DROPPROCEDUREIFEXISTSInsertProc$$CREATEPROCEDUREInsertProc(INvBarVARCHAR(25

mysql - 奇怪的MySQL查询计划: why is this query using temporary & filesort?如何优化?

我有一个问题:SELECT*FROMamp_ads,amp_c,amp_c_countriesWHERE(amp_c.zone='24'ORamp_c.zone='25')ANDamp_ads.ad_complete='1'ANDamp_ads.ad_type='17'ANDamp_ads.accept='1'ANDamp_ads.en_w='1'ANDamp_c.en_u='1'ANDamp_c.en_w='1'AND(amp_c.i_nu>'0'ORamp_c.c_nu>'0'ORamp_c.d_valid_by>'1299341823'ORamp_c.unlimit='1')AN

MySQL 存储过程在与 "SELECT command denied to user ' 用户 @'localhost' 表 'view_name' 的相同连接上第二次调用失败

我有一个名为sales_observation_daily_summary的表,它是sales_observation_daily_summary_view的物化View。我已经定义了一个名为sync_daily_summary_view_with_table的存储过程,它将刷新物化View。在功能上,它完全符合我的预期。但是,在同一个连接上调用存储过程两次时我有一个奇怪的错误(使用连接池时可能出现的情况)。最初这是在我的Java集成测试中出现的,但我能够轻松地在MySQLWorkbench上重现它,因此它不应该与JDBC或Spring或类似的中间任何东西有任何关系。callsync_

mysql - ORDER BY 优化是否在下面的 SELECT 语句中生效?

我有一个要优化的SELECT语句。mysql-orderbyoptimization表示在某些情况下索引不能用于优化ORDERBY。具体点:YouuseORDERBYonnonconsecutivepartsofakeySELECT*FROMt1WHEREkey2=constantORDERBYkey_part2;让我想到,情况可能就是这样。我正在使用以下索引:UNIQUEKEY`met_value_index1`(`RTU_NB`,`DATETIME`,`MP_NB`),KEY`met_value_index`(`DATETIME`,`RTU_NB`)使用以下SQL语句:SELECT

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)