如何在 SQL 选择语句中执行此操作..
考虑到我有这张桌子
ID_A - DATE1 - DATE2
=====================
CD99 - 11/25 - 12/08
AB23 - 11/20 - 11/22
AB23 - 11/22 - 12/01
XP72 - 11/23 - 12/08
您会注意到 ID_A=AB23 有两个条目,第一行的 DATE2 等于第二行的 DATE1,这意味着这两行是连接的。
那么,如何获取或创建我的 select 语句来查看这些相互连接的行?
编辑:我在选择语句中试图做的是:a。检查 DATE2 是否不为空 b。从那里,检查 DATE2 是否存在于整个表的 DATE1 中并返回列的值。
我想得到的应该是这样的:
ID_A - DATE1 - DATE2
=====================
AB23 - 11/20 - 11/22
AB23 - 11/22 - 12/01
PS我希望不要使用循环来执行此操作。因为当我拥有太多数据时,这会使服务器响应速度太慢。- 请注意,我正在比较同一数据库中的列..
@fthiella 这是我的示例数据,我指的是场景。
ID_A - DATE1 - DATE2
=====================
CD99 - 11/25 - 12/08
AB23 - 11/20 - 11/22
AB23 - 11/22 - 12/01
XP72 - 11/23 - 12/08
PQ10 - 11/20 - -n/a-
LM88 - 11/21 - -n/a-
PQ10 - 11/15 - 11/20
从那里我想得到这些:
ID_A - DATE1 - DATE2
=====================
CD99 - 11/25 - 12/08
AB23 - 11/22 - 12/01
XP72 - 11/23 - 12/08
这是我为什么排除其他人的快速解释:
ID_A - DATE1 - DATE2
=====================
CD99 - 11/25 - 12/08 - not excluded
AB23 - 11/20 - 11/22 - excluded because DATE2 is connected to DATE1 of same ID_A
AB23 - 11/22 - 12/01 - not excluded
XP72 - 11/23 - 12/08 - not excluded
PQ10 - 11/20 - -n/a- - excluded because DATE2 is null
LM88 - 11/21 - -n/a- - excluded because DATE2 is null
PQ10 - 11/15 - 11/20 - excluded because DATE2 is connected to DATE1 of same ID_A (regardless if DATE2 of that line is null)
条件的优先级可以是 - 首先排除 null DATE2,然后检查比较并排除那些在其他行之前的行。
很抱歉花这么多时间,我真的很感谢你给我的每一个帮助.. 现在这个问题可以标记为已回答,再次感谢 fthiella..