草庐IT

join_group

全部标签

MySQL : ORDER BY FIELD/GROUP BY

我的问题是关于MySQL优化和良好实践。我必须获得带有顺序偏好的翻译文本列表:如果我找不到英文文本,我想使用法语文本,如果不存在,我想使用西类牙语。换句话说,我有:idlangtext1frtext_FR1entext_EN1estext_ES2frtext_FR23frtext_FR33estext_ES3我想要:idlangtext1entext_EN2frtext_FR23frtext_FR3所以我阅读了一些主题,例如this,this,that,或that.好的。我试过这个:SELECTtextFROM(SELECTid,textFROMtranslationORDERBYFI

mysql - 在带有 OR 条件的 LEFT JOIN 中使用索引

考虑以下查询:SELECT*FROMtable1LEFTJOINtable2ONtable2.some_primary_key=table1.some_primary_keyLEFTJOINtable3ONtable3.some_primary_key=table1.some_primary_keyOR--thisistheissuetable3.column_with_index=table2.column_with_index当我检查EXPLAIN时,它显示索引未用于table3连接(但索引显示在“possible_keys”中)。类型:“全部”。根据manual:Jointype

mysql - 使用 LEFT JOIN 在 MySQL 中查找孤立记录

我正在尝试使用LEFTJOINS查找不同的孤立menu_item记录,然后检查NULL值。下面的查询返回的结果实际上不是孤立的。mitem_id是menu_item表的主键和price_info表的外键。pinfo_id是price_info表和外键orderdetails表的主键。SELECTDISTINCTmi.mitem_id,descrFROMmenu_itemmiLEFTJOINprice_infopiONpi.menu_item=mi.mitem_idLEFTJOINorderdetailsodONod.price_info=pi.pinfo_idWHEREod.detai

mysql left join where with an or,扫描整个表(无索引)

我尝试了几种不同的方法,但结果很糟糕。核心问题是成员搜索正在扫描所有成员,忽略索引。主要原因(据我所知)是这个片段(Member.priv_profile=3ORMyFriend.status_idIN(1,2))单独使用该OR片段的任一侧都可以正常工作,获取索引,扫描几行,因此性能良好。我真的不想将此查询拆分为2并执行UNION,但我们可能不得不这样做,除非有人能想出一个好方法使此选择与重要的OR一起“工作”。mysql>ALTERTABLE`members`ADDINDEXA(is_active,last_name,first_name);QueryOK,140019rowsaff

mysql - 避免使用 INNER JOIN + ORDER BY 进行文件排序

我一直在阅读其他帖子,但未能解决我的问题。使用DESC命令查询速度慢了x20倍,我必须改进它。这是查询:SELECTposts.post_id,posts.post_b_id,posts.post_title,posts.post_cont,posts.thumb,posts.post_user,boards.board_title_l,boards.board_titleFROMpostsINNERJOINfollowONposts.post_b_id=follow.board_idINNERJOINboardsONposts.post_b_id=boards.board_idWHE

使用 UNION/UNION ALL 和 Group By 的 MySQL 查询错误

生成如下两个结果集:1).查询OCCUPATIONS中所有姓名的按字母顺序排列的列表,紧随其后的是每个职业的第一个字母作为括号(即:括在括号中)。例如:AnActorName(A)、ADoctorName(D)、AProfessorName(P)和ASingerName(S)。2).查询OCCUPATIONS中每个职业出现的次数。将出现的次数升序排列,并按以下格式输出:共有[occupation_count][occupation]个。表名:职业总列数:两个='姓名'和'职业',演示表如下所示:示例输出:Ashely(P)Christeen(P)Jane(A)Jenny(D)Julia

mysql - 如何选择多个 GROUP BY 行的 SUM?

我有一张球员与比赛的关系表以及他们在每场比赛中的得分。我正在尝试做一个SELECT,在其中我得到一个不同的球员列表,他们的总得分以及他们所参加的所有球队的总得分。由于一切都是关于单人游戏,我不知道如何仅针对该单列退出GROUPBY范围。对于下面的例子,我只说每支球队只有两名球员。在实际数据库中,如果重要的话,每个团队都有五个。谢谢大家。表格“匹配”:match_id|winning_team|56427859|0|56427860|1|56427861|1|56427862|0|56427863|1|etc...表“match_players”:match_id|team|player

每个 GROUP BY 的 MySQL n 个结果,按计数排序

Country-Company具有1-n关系。Company-Dish有n-n关系。我需要从每个区域获取菜肴,根据它们在各自区域中的数量降序排列,每个区域有100个结果。目前为止SELECTdishes.title,dishes.name,dishes.id,countries.localeFROMcountriesJOINcompaniesONcompanies.`country_id`=countries.`id`JOINcompany_dishONcompany_dish.`company_id`=companies.`id`JOINdishesONcompany_dish.`d

php - Mysql GROUP BY 和 COUNT 用于多个 WHERE 子句

简化表结构:CREATETABLEIFNOTEXISTS`hpa`(`id`bigint(15)NOTNULLauto_increment,`core`varchar(50)NOTNULL,`hostname`varchar(50)NOTNULL,`status`varchar(255)NOTNULL,`entered_date`int(11)NOTNULL,`active_date`int(11)NOTNULL,PRIMARYKEY(`id`),KEY`hostname`(`hostname`),KEY`status`(`status`),KEY`entered_date`(`ent

sql - MYSQL多表join前N行

例如,在sqlserver2005中有top关键字,如果我在多个表上有联接并且想检索每个ID/列的极端,如何在mysql中选择前1行。Limit限制了编号。行返回,所以它不能解决我的问题。 最佳答案 SELECTv.*FROMdocumentdOUTERAPPLY(SELECTTOP1*FROMversionvWHEREv.document=d.idORDERBYv.revisionDESC)v或SELECTv.*FROMdocumentdLEFTJOIN(SELECT*,ROW_NUMBER()OVER(PARTITIONBYv.