草庐IT

select_limit

全部标签

mysql - 要获取最后 10 条记录,将 'LIMIT' 添加到 MySQL 查询会使它更快?

有人可以解释一下我是否想获取最后10条记录,向MySQL查询添加“LIMIT”可以使其更快吗?喜欢SELECT*FROM`table`ORDERBYidDESCLIMIT50;有没有其他方法可以获取最后10条记录或者更快? 最佳答案 limit的问题是它必须对表中的所有行排序,在只返回最后50行之前,所以它总是会变慢,并且会随着表的增长而变慢(不可扩展)。获得最后50个的最快方法是:SELECT*FROM`table`WHEREid>(SELECTMAX(id)FROM`table`)-50这将使用id上的索引来获取最大id并再次获

mysql - 如何在 MySQL 的 INSERT 语句中使用 SELECT MAX?

简短版本:如何获取列的最大值并在使用INSERTINTO语句添加行时使用结果?长版:我已阅读问题:Howtouse'select'inMySQL'insert'statement并尝试按照说明获取答案。这是我的查询:INSERTINTOemployee(id,name,state,supervisorId)SELECTMAX(id)+1,'Dan',state,supervisorIdFROMemployeeWHEREname='Chris';但是我得到这个错误:ERROR:1062:Duplicateentry'7'forkey'PRIMARY'原因是我有另一行id是7。因此,MAX

Mysql select row of max id 返回错误数据

我有一个表格如下:tabl1:idnamecreated_on--------------------1red20162green20173blue2018然后查询如下selectmax(id),name,created_onfromtabl1结果:idnamecreated_on-----------------3red2016在这里,我正确获取了最大ID,但名称和created_on值不在同一行。我怎样才能返回这样的结果:idnamecreated_on-----------------3blue2018 最佳答案 您应该使用最

mysql - 如何在 select 语句中创建表达式而不将其作为列返回?

我有一些来自数据库的行,我想将它们插入到另一个数据库中。因为有很多行我想在mysql中使用INSERT..SELECT...构造。我尝试运行的语句如下:set@rank:=1;set@currpoints:=0;set@currgroupcount:=0;SELECTid,@rank:=if(@currpoints=points,@rank,@rank+@currgroupcount)ASrank,@currgroupcount:=if(@currpoints=points,@currgroupcount+1,1),@currpoints:=pointsFROMcharactersOR

SQL 帮助 : select the last 3 comments for EACH student?

我有两个表来存储小学教室的学生数据:Behavior_Log包含student_id、comments、date列Student_Roster有student_id、firstname、lastname列数据库用于存储对学生行为的每日评论,有时老师会在给定的一天对一个学生发表多条评论。现在假设老师希望能够为每个学生提取最后3条评论的列表,如下所示:Jessica7/1/09talkingJessica7/1/09passingnotesJessica5/3/09absentCiboney7/2/09greatparticipationCiboney4/30/09absentCibone

php - 可能从日期字符串 Select 查询注入(inject)

我有一个有点奇怪的问题。我的页面包含一个刷新页面并调用PHP变量的html链接。此变量将日期字符串附加到url字符串,该字符串被馈送到MySQL查询中,该查询获取与该日期匹配的记录。我认为这会导致注入(inject),因为它有时会从数据库中删除用户!我知道在超链接中使用“#”可能存在安全问题,但我想知道发生了什么。这也会对不同的浏览器产生不同的影响,因为它是如何使用javascript的。被删除的用户似乎只发生在某些人的计算机上。PHP代码计算从现在起三天后的时间戳,然后将其转换为SQL格式:$ts_threeDays=mktime(1,0,0,date('m'),date('d')+

sql - MySQL - 如何运行按分数排序结果的 SELECT 查询 - 例如 upvotes - downvotes

我有两个表——文章表和投票表。用户可以投票赞成或反对他们选择的文章(类似于Reddit)。我在投票表中的字段是:文章编号用户编号投票vote字段的值可以是0或1...(如果他们投票反对该文章则为0,如果他们投票赞成则为1)。我想做的是运行一个SELECT查询,返回所有得分最高的文章。也就是说,赞成票减去反对票。但是,我完全不知道如何做到这一点。我能够返回所有获得最多赞成票的文章,例如:--articletableiscalled"article"--votetableiscalled"user_article_vote"SELECTarticle.title,article.summa

mysql - 在 MySQL SELECT 查询中生成重复响应

我正在使用应用程序中的报告编写功能来生成条形码产品标签。报告编写系统允许我使用MySQLSELECT语句从我们的数据库中获取我需要的信息,并将其呈现给格式化报告的JasperReportsJRXML文件。如果我想为通过我的SELECT语句从数据库返回的每个产品生成一个条形码标签,这很好用。但是我想为每个产品标签制作五十份。如果我可以访问代码就足够简单了,但我只能更改SQL语句。任何人都可以建议一种方法,让我可以让MySQLSELECT语句为它在产品表中找到的每条记录返回50个相同的结果吗?感谢您的帮助。 最佳答案 我只有一个丑陋的解

mysql:SELECT 的 ROW_COUNT() 信息函数是什么?

我正在寻找内置的MySQL信息函数,它返回刚刚选择的行数,就像ROW_COUNT()对INSERT、UPDATE等所做的那样。在存储过程中我希望这样做:...selectepisode_namefrombestLOSTepisodesset_episodes_found=SELECTED_ROWS();...我已经进行了大量的挖掘,但一直无法找到像SELECTED_ROWS()这样的函数。 最佳答案 您可能想要使用FOUND_ROWS()功能。例子:CREATETABLEusers(idint,namevarchar(20),age

带有 INNER JOIN 的第二个表上的 MySQL LIMIT 1

我正在使用此查询来打印论坛板及其所有子论坛。正如预期的那样,会显示属于该论坛的所有线程中的所有帖子。我希望只显示每个主题的第一篇帖子以及论坛标题。查询:SELECTtf_threads.*,tf_posts.*FROMtf_threadsINNERJOINtf_postsONtf_threads.thread_id=tf_posts.thread_idANDtf_threads.parent_id=54ORDERBYtf_posts.dateASC请注意parent_id字段在实际查询中被赋予一个变量。所以。如果我说得通,谁能帮我写什么查询来只从每个线程中选择第一篇文章?如果没有简单(