草庐IT

LEFT-JOIN

全部标签

MySQL select where in but not in with join

我的数据库中有三个表:产品id(整数,主键)名称(可变字符)标签id(整数,主键)名称(可变字符)产品标签产品编号(整数)tag_id(整数)我正在执行SQL查询以选择具有给定ID的已分配标签的产品:SELECT*FROMProductsJOINProductTagsONProducts.id=ProductTags.product_idWHEREProductTags.tag_idIN(1,2,3)GROUPBYProducts.id我可以选择没有指定ID标签的产品:SELECT*FROMProductsJOINProductTagsONProducts.id=ProductTags

mysql - Equi Join的特例

我遇到了这个使用特殊形式的equijoin的特定脚本。SELECT*FROMper_assignmentsa,per_assigment_typesbWHEREa.assignment_status_type_id+0=b.assignment_status_type_id为什么在等值连接中添加零?我开始知道它与避免索引搜索有关,但仍然有人可以解释完整的情况。提前致谢编辑:这不是与表/列声明相关的东西。据我所知,这与SQL调优有关。这是我发现的:-这用于较小的表格。这不是像通常那样进行索引搜索,而是一次搜索整个表。但我真的不知道与普通等值连接到底有什么区别,而且索引如何影响性能。如果有

mysql - 为什么一个查询中有 2 个左连接导致错误?

注意:如果您正在寻找自己问题的解决方案而您被吸引到这里,它可能对您没有帮助。除非您正在分析一个SQL查询以查找错误,而实际上该错误可能存在于跟随它的查询中,而您并不知道,否则这个问题对您没有帮助。我现在只是警告你,因为这个问题中提供的数据都没有真正得出答案。为了扩展数据库表regular_rules在不修改表本身的情况下,我创建了一个附加表(extended_rules),其PK也是regular_rules的FK.然后我可以在extended_rules中放置任何新列,然后任何时候我从它加载一条记录我只需要用regular_rules加入它为了把它当作完整的对象来对待。因此,如您所见

mysql - LEFT JOIN 3列获取用户名

我需要加入来自3个不同表的三列,贡献表:+-----------+---------------------+|record_id|contributor_user_id|+-----------+---------------------+|1|2|+-----------+---------------------+|1|5|+-----------+---------------------+成员表:+--------------+---------+|username|user_id|+--------------+---------+|Test|1|+------------

MySQL 左外连接问题

这是一个按小时按价格点对交易进行分组的查询:SELECThour(Stamp)AShour,PointIDASpricepoint,count(1)AScounterFROMTransactionsGROUPBY1,2;示例输出:+------+------------+---------+|hour|pricepoint|counter|+------+------------+---------+|0|19|5||0|20|14||1|19|3||1|20|12||2|19|2||2|20|8||3|19|2||3|20|4||4|19|1||4|20|1||5|19|4||5|2

mysql - 左连接对多列性能的影响?

假设我有2个表:table1:(20.000records)idcode1code2somethingstatustable2:(7.500records)idcode1code2name我想要的只是使用此查询列出表1中具有表2中“名称”的所有记录:SELECTDISTINCT`tb1`.*,`tb2`.`name`FROM`table1`AS`tb1`LEFTJOIN`table2`AS`tb2`ON(tb1.code1=tb2.code1ANDtb1.code2=tb2.code2)WHERE(tb1.status=1)但是我检索数据的时间太长了(5分钟后我仍然看不到结果)。执行此

MySQL:在没有 JOIN 或 UNION 的情况下合并两个不同的表

我需要合并两个表:两者都有一个主键列日期,但具有不同的值(不同的时间间隔)。两者都有不同的(未知)列:我不知道列的名称(两个表中可能出现相同的列名),我不知道有多少列,但都是相同的类型。一个例子:table1date|colA|colB|colC2011-02-02|1.09|1.03|1.04table2date|col1|col2|col3|col42011-02-03|1.03|1.02|1.07|1.03查询的结果应该是这样的:tableResultdate|colA|colB|colC|col1|col2|col3|col42011-02-02|1.09|1.03|1.04|

mysql - 带有 LIMIT 的 MySQL JOIN 是否在内部进行了优化?

表community作为id:int,name:varchar。另一个表category_people作为community_id:int,person_id:int。带有LIMIT查询的JOIN可以是SELECTb.user_id,group_concat(a.nameSEPARATOR',')asgroupsFROMcommunitiesaJOINcommunities_usersbONa.id=b.community_idGROUPBYb.user_idLIMIT1000OFFSET2000;在此查询中,MySQL是否会执行任何内部优化(a)先执行限制、偏移部分,然后再连接,或者

mysql - 在 Join 中测试空子查询

我有一个带有非空日期字段的事件表。基于数据透视日期和偏移量,查询必须返回接下来的2个事件。这是我要构建的查询:SELECTe.*FROMEventsaseJOIN(--latesteventbeforepivotdate,withoffsetSELECT*FROMEventswheredateeFirst.date||(e.date=eFirst.date&&e.id>=eFirst.id)ORDERBYe.date,e.idLIMIT2按日期ASC排序时具有以下事件序列(为了简单起见,没有相等的日期):e0-e1-e2-...-e10这里有一些想要的结果::dateRef=e2.da

mysql - 缓慢的 MySQL IN 查询——如何转换为 JOIN?

我目前的MySQL查询最多需要10秒才能在我的应用程序中运行:SELECTtagid,tagFROMtagsWHEREtagidIN(SELECTDISTINCTtagidFROMnews_tagsWHEREnewsidIN(SELECTnewsidFROMnews_tagsWHEREtagidIN(16,32)GROUPBYnewsidHAVINGCOUNT(newsid)>=2))ANDtagidNOTIN(16,32)ORDERBYlevel,tagid使用的表格是:表news_tags,列newsid,tagid表tags,列tagid,tag,level查询的目的是查找带有t