草庐IT

LEFT-JOIN

全部标签

MySQL 查询加速

我的查询速度有问题-它目前运行大约16秒,我需要加快速度!我的表方案如下:用户:id(int10,主键)用户名(varchar100)密码(varchar100)用户元:id(int10,主键)用户(int10)元数据(varchar100)值(长文本)我需要将用户元表中各行的数据(例如名字、姓氏等)作为列返回。此查询可以完成工作,但运行速度太慢:SELECTUsers.idasid,Users.usernameasusername,firstName.valueasmetaFirstName,lastName.valueasmetaLastName,userLevel.valueas

php - 基于用户级别不同的mysql join查询

我正在寻找执行以下操作的想法或最佳实践:我有表格:profile包含基本信息(id、email、pass、lvl)profile_user包含(pid、姓名、年龄等)profile_mod包含(pid、company_name、money等)如您所见,我将对两个表进行左连接以获取全部信息,但连接将全部基于属性lvl。如果lvl=1它将在profile_user上左连接,而lvl=2将在profile_mod上执行连接。我的问题是,我不想对每个查询执行检查以获取lvl,然后对其他两个表执行leftjoin。我想知道这种情况是否有最佳实践。 最佳答案

mysql - 如果一条记录不在 MySQL 的第二张表中,如何查询两个表并返回 NULL?

我正在运行MySQL5.0.88并且需要从两个表中选择数据,分别是articles和media。当上传图片到我的服务器时,我需要查询一个用户的所有文章,看媒体表(字段type="img")是否已经指定了路径,以避免不必要的运行覆盖。我曾希望在我的查询中只包含m.type,但我无法让它工作。我的查询是这样的:SELECTDISTINCTa.style,a.filename,a.path,m.typeFROMarticlesASaLEFTJOINmnediaASmONa.iln=m.ilnWHEREa.iln=id_12345ANDm.type="img"ANDm.typeISNOTNUL

mysql - 打印嵌套 Left Join + Union MySQL 查询中的所有行

我有一个查询,用于计算循环月度保留金的信息。该项目每个月都有一定的小时数分配给它,每个月的不同时间段开始(例如,2月5日至3月4日)。查询结果的列包括:项目名称记录的总小时数每月剩余小时数经期的最后一天剩余天数例如,项目A记录了15小时,每月还剩5小时。本期最后一天为11月17日,距离今天还有3天。当前查询采用4个表,这些表使用左连接来打印所有客户,即使没有记录小时数,然后它使用嵌套子查询(第8-86行)计算第2、3、4列和5。但是,第4列和第5列不会打印,它们始终显示为NULL。(那些是经期的最后一天和剩余天数)。您可以在此处的SQLfiddle链接中查看模式+查询代码:http:/

mysql - 如果没有匹配项,则使用默认值执行 LEFT JOIN

首先,我什至不确定LEFTJOIN是否是做我想做的事情的最佳方式,所以我会尽力解释。我有2个表-一个包含站点列表,另一个包含角色列表。一个用户可能只有一个角色,但他们可能拥有与网站一样多的角色。表“站点”site_id|site_name|site_domain---------------------------------------1|SiteA|sitea.com2|SiteB|siteb.com表“角色”site_id|user_id|role_id---------------------------------1|1|11|2|12|2|2在我上面的例子中,用户1在一个网

php - 如何循环 JOIN

我在图片中有这个表格数据。它基本上由同一张表中的地名和它所属的其他地方组成。字段belongs_to指的是其他地方的id。这是我正在使用的查询:SELECTA.type,A.name_enASname_A,B.name_enASname_B,C.name_enASname_CFROMaddressASALEFTJOINaddressASBONA.belongs_to=B.idLEFTJOINaddressASCONB.belongs_to=C.idWHEREA.name_enLIKE'%".$_GET['name']."%'"当我输入“sy”时它工作正常:[type]=city[nam

mysql - 为什么这个左外连接会产生错误的结果?

我对以下关于OUTERJOIN的SQL(也许微不足道)感到困惑。我有2个小表emp和deptno即有员工及其部门的记录。他们的关系显然是1-N(但这无关紧要)。我正在尝试使用外部联接来查找没有员工在那里工作的部门。所以我认为正确的解决方案是OUTERJOIN。如果我执行以下操作:selectd.deptnoasd_deptno,e.deptnoase_deptnofromdeptdleftouterjoinempeond.deptno=e.deptno;我得到:d_deptnoe_deptno10,1010,1010,1020,2020,2020,2020,2020,2030,3030

mysql - SQL从有限制的2个表中选择

基本上,我有两个表:管理和图片。我需要一个包含管理表中所有属性的列表。如果图片存在,列表只需要显示第一张图片(seq=1)。我的问题:列表不显示没有图片的属性。我该如何解决这个问题?我有以下表格:人人propid|city|lang|...1MolNL2OlenNL3GeelNL4HamFR图片propid|lang|seq|filename1NL1file111FR1file121NL2file131FR2file141NL3file151FR3file163NL22file173FR22file183NL23file193FR23file203NL24file213FR24file

mysql - 如何在某些表上使用左连接编写正确的 sql?

美好的一天。STRUCTURETABLESANDERRORWHENEXECUTEQUERYONSQLFIDDLE我有一些sql查询:第一次查询:SELECTn.TypeASType,n.UserIdnASUserIdn,u.UsernameASUsername,n.NewsIdnASNewsIdn,n.HeaderASHeader,n.TextASText,n.TagsASTags,n.ImageLinkASImageLink,n.VideoLinkASVideoLink,n.DateCreateASDateCreateFROMNewsnLEFTJOINUsersuONn.UserId

mysql - JOIN 与 WHERE : Why do two queries that obtain identical results exhibit 3-4 orders of magnitude performance difference?

今晚早些时候,我问了thisquestiononStackOverflow关于如何编写SQL查询以通过仅返回在一个字段中具有重复项的行来过滤表中的行。这里是问题,为方便起见重复:如果我有这些数据:code1code2110...我想编写一个单个SQL查询,其结果如下:code1code2110(即,返回code1列中的任何数据多次出现的所有行的单个SQL查询)...我该怎么做?我receivedananswer有两个可能的SQL查询,它们都能完美地工作。成功的SQL#1:SELECTcode1,code2FROMmyTableWHEREcode1IN(SELECTcode1FROMmy