问题标签 [on-clause]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQL JOIN - WHERE 子句与 ON 子句
看完后,这不是Explicit vs Implicit SQL Joins的重复。答案可能相关(甚至相同),但问题不同。
有什么区别,每个应该做什么?
如果我正确理解了理论,查询优化器应该能够互换使用两者。
sql - 常量值如何影响 Join 的 ON 子句?
我最近发现 LEFT JOIN 的 ON 子句可能包含 (1 = 1) 之类的值。
这让我很沮丧,因为它打破了我对连接功能的看法。
我遇到了以下情况的更详细版本:
这是完全合法的。如果有的话,“Manager.ID = -1”会完成什么?这对加入有何影响?
linq - Linq 以非平凡的条件离开加入
这很好,它产生一个左连接
但是如果我想做这样的事情怎么办:
doctrine - 教义 2 和“ON 子句中的未知列”
我目前正在一个项目中使用 Doctrine 2 和 ZF。到目前为止,一切都很好。但是我有一个看起来像错误的问题。
我在我的一个存储库中编写了以下代码:
生成了以下 SQL:
但是,我总是得到一个“ON 子句中的未知列 a0_.student_id”但 student_id 列确实存在于 Applications 表中。
我用谷歌搜索了一下,发现这个链接http://www.oscommerce-fr.info/faq/qa_info.php?qID=198(抱歉是法语)说在 MySQL 5.0.12 之后,解析器发生了变化,并且当您有多个 FROM 子句(这是我的情况)时,您必须添加括号。
如果我通过更改来重写 SQL 代码: FROM Applications a0_, Missions m2_
至 :
有用 !但是我不知道如何在 DQL 代码中添加这些括号(我尝试过,但失败了)。
所以也许这是一个错误,只要你有多个 FROM 子句,Doctrine 2 就应该插入括号,或者我错了?
sql - 表左连接时“where”子句和“on”子句有什么区别?
SQL1:
SQL2:
区别在于where
和on
子句,它返回相同的结果吗?有什么区别?DBMS 是否以相同的方式运行它们?谢谢。
mysql - 如果在 ON 子句中使用 OR,MySQL 将不会在 JOIN 中使用可用索引
假设您有 5 个表,每个表都有它们的列:
- 房子(id,name,street_id)
- 街道(ID,名称)
- 照片(身份证,姓名)
- house_photo (house_id, photo_id)
- street_photo (street_id, photo_id)
并说所有 'id' 列和以 '_id' 结尾的列已经有索引。
(实际上我的查询与房屋或街道无关。它们是为了争论。)
现在假设您想将每条街道分成一列,如果那条街道或其房屋有照片,您希望下一列中的照片......
这里的棘手之处在于所有的房子都在一张桌子上。以及另一张桌子上的所有照片。但是要链接 2,我们需要访问所有五个表。
我想出了以下查询,其中包含 4 个 JOIN:
独特之处在于过滤掉双打,因为当你有超过 1 张房子的照片和超过 1 张房子街道的照片时会生成它们。(Carthesian 产品)但这与我的问题无关。
我遇到的问题是查询超级慢。(需要超过 1 分钟甚至更长的时间才能完成)
当我要求 MySQL 分析查询('explain extended')时,我看到它在处理最后一个 JOIN(在 ON 子句中有一个 OR)时不会使用可用的索引。
如果我将最后一个 JOIN 拆分为 2 个 JOIN,(从而添加第五个 JOIN),查询再次变得非常快。(需要一秒钟才能完成。)
我现在的问题是:为什么在 ON 子句中引入 OR,使 MySQL 不使用该 JOIN 的可用索引/键?
我已经尝试过使用 USE INDEX 和 FORCE INDEX,但它不会让步。
欢迎任何解释/帮助。
oracle - ON 子句具有子查询的两个表的右外连接
我正在尝试在两个 liferay 表上执行右外连接 -users_
并且expandovalue
- 以获得结果集。
当我对所有用户进行以下查询时,我得到了想要的结果。
当尝试对一组用户(用户组的一部分)执行相同操作时,它会出错。如下查询:
这是给出userid
特定用户组中人员 s 的子查询。
我会朝着一个完全错误的方向前进吗?请指教。
codeigniter - 使用 codeigniter 活动记录的多个 on 子句
我需要使用 codeigniter 活动记录对左连接查询执行多个 on 子句。我写了这段代码:
通过执行此代码点火器添加 where not in 子句,而我需要添加与左连接相关的 ON 子句。如果可能的话,我想使用活动记录。
db2 - 为什么子查询在 DB2 的 ON 子句中不起作用
为什么这个简单的查询在 oracle 中可以正常工作,但在 DB2 中却不行:
将涉及子查询的条件移动到 where 子句可能会有所帮助,但这会将外部联接限制为内部联接。
ruby-on-rails - 将参数添加到 ON 子句的任何可能方法包括导轨上的左连接?
我有一个像这样的巨大复杂查询:
然后我想显示所有Objects
并且只有Important_things
在两个日期之间创建的。
如果我把它放在那里的where
条款上,我不会得到所有,Objects
只有在知情日期之间。Objects
Important_things
使用原始 sql 的解决方案是:
select * from objects left join important_things on important_things.object_id = objets.id and important_things.created_at between 'x' and 'y'
代替:
select * from objects left join important_things on important_things.object_id = objets.id where important_things.created_at between 'x' and 'y'
我真的需要所有这些对象,我不想使用原始 SQL、任何解决方法或将参数传递给ON
关联子句的可能性?