我想从表一中选择所有内容,其中包含一列JID。这些是玩家可以学习的东西。但是有一个table2,其中列出了玩家已经学到的东西。所以如果JID在table2中,已经学习了,我不想从table1中选择那个。例如。表1JID标题描述排名表2JIDUserIDvalue1value2表1可能有100行,但如果表2有9行,其中一些来自表1的JID,我不想选择它们。更重要的是,它特定于表2中的用户ID。所以我需要通过JID过滤表2!=匹配表1中的JID,但仅当userID=传递的php变量时。希望这是有道理的。我不想要子查询。我认为可以在JID上使用左外连接,但我不确定如何调用USERID...帮
我正在加入几张table进行选择如果在第2、3、4个表中没有任何匹配项,只要第一个表有匹配项,我仍然想提取结果。我以为LEFTJOIN做到了这一点,但事实并非如此。这是完整的查询:SELECTcart_product.*,prod_drop_products.prod_drop_product_name,everlon_sheet.*,cart_product.product_idASproduct_idFROMcart_productLEFTJOINeverlon_sheetONcart_product.product_id=everlon_sheet.product_idLEFTJ
这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:InMySQLqueries,whyusejoininsteadofwhere?联接总是让我感到困惑..谁能告诉我不同联接之间的区别是什么,哪个最快,什么时候使用哪个联接以及联接和where子句之间的区别是什么?请详细给出你的答案,因为我已经在一些网站上阅读过有关加入的内容,但没有正确理解这个概念。
我有这个查询,它工作正常,只是需要很长时间(7秒,jobs表中有40k条记录,wq表中有700k条记录)。我尝试了一个EXPLAIN,它说它查看作业表中的所有记录,而不使用任何索引。我不知道如何告诉MySQL它应该在查找wq表之前使用jobs.status字段来过滤记录。这样做的目的是从状态为!=331的作业以及wq状态为(101,111,151)的任何其他作业中获取所有记录。查询:SELECTjobs.*FROMjobsLEFTOUTERJOINwqON(wq.job=jobs.idANDjobs.statusIN(341,331)ANDwq.statusIN(101,111,151
我试图弄清楚如何在有LEFTOUTERJOIN的地方允许可选的AND语句,因为在查看记录时该表是可选的。但是,我有一个问题,就是没有文件,在WHERE语句中,像这样:SELECTrec.record_id,rec.record_name,f.file_name,f.file_idFROM(recordsrecLEFTOUTERJOINfilesfONf.record_id=rec.record_id)WHERErec.record_id=4928ANDf.file_approved=1当我删除ANDf.file_approved=1时,它会返回一条记录,但当我离开它时,它不会返回任何记
MySQL连接表的顺序是什么,它是如何选择的,STRAIGHT_JOIN什么时候派上用场? 最佳答案 MySQL只能进行嵌套循环(可能使用索引),因此如果两个连接表都被索引,则连接的时间计算为A*log(B)如果A是前导,B*log(A)如果B是前导。很容易看出满足WHERE条件的记录较少的表应该放在前导。还有一些其他因素会影响连接性能,例如WHERE条件、ORDERBY和LIMIT子句等。MySQL尝试预测连接顺序的时间,如果统计数据是最新的,它会做得很好。STRAIGHT_JOIN在统计数据不准确(例如,自然倾斜)或优化器中存在
我有一个运行良好的MySQL连接查询(免责声明:摘自教程):>但是,如果我想让它忽略NULL结果,我需要用JOIN做什么,哪种类型合适?我在Google上查看过,但不确定从这里开始的地方。 最佳答案 说您想忽略NULL结果到底是什么意思?你是说当你的leftjoin执行时你会得到一些买家,他们旁边是NULL产品会在哪里(如果他们买了一些)?在那种情况下,您正在寻找的是一个INNERJOIN,它将只有在另一个匹配时才显示值。 关于php-忽略MySQLJOIN查询中的空结果,我们在Stac
我有以下表格:用户编号|姓名信息编号|资讯|user_id(表info中的user_id是外键=>连接到表users中的id)用户可能在信息表中有许多条目(许多行中的相同user_id)。现在我想获取数据并像这样显示它:username:...info....例子:admin:aaabbbcccsomeuser:dddeeefff所以我这样使用LEFTJOIN:SELECTusers.name,info.infoFROMusersLEFTJOINinfoONusers.id=info.user_id但我得到的是以下内容:admin:aaaadmin:bbbadmin:ccc我怎样才能只
我试图选择性地返回一些值(如果它们存在),如果不存在则返回集合的其余部分。SELECTpeople.first_name,countries1.nameAS"Country1"FROMaddressbook_peopleASpeopleJOINroot_countriesAScountries1ONpeople.country1=countries1.id在某些情况下,不会为people.country1提供任何值,但是,如果没有提供任何结果。我将如何重组此查询以仍然返回people.first_name当people.country1没有值(value)时?
我有以下MySQL查询,我正在使用PHP(5.2)。DELETEt1.*,t3.*FROMforum_postsASt1,forum_topicsASt2,user_pointsASt3WHEREt1.topic_id=t2.topic_idANDt2.deleted=1ANDt1.post_id=t3.idANDt3.type='post'ANDt1.post_author=t3.profile_author但是它也没有按照我的预期运行(没有任何反应!),让我解释一下:我希望查询执行的操作是删除forum_posts表中的所有行和/或(我说“和/或”是因为这取决于这些行是否存在)删除