【发布时间】:2019-07-01 23:59:38
【问题描述】:
在上图中代表一个 SQL 表的图像中,我想搜索 1111 并检索其最后替换的数字,该数字应该是 4444,其中 1111 只是由单个数字 4444 替换的单个数字。然后我想搜索 5555 哪个应该返回 (6666,9999,8888)。 NB 9999 已取代 7777。
所以 1111 是一个零件编号被多次替换,而 5555 是一个组编号,其中包含多个零件细分,其中一个替换编号位于 (7777>>9999) 内。
最快最有效的方法是什么?
如果可能的话,使用 SQL 来提高效率的解决方案。
如果不能在 SQL 中,则在 PHP 中。
我尝试过的:
1) while 循环。但需要为 1000 个替换号码访问数据库 1000 次。 ##效率太低了。
2)
SELECT C.RPLPART
FROM TABLE A
left join TABLE B on A.RPLPART=B.PART#
left join TABLE C on B.RPLPART=C.PART#
WHERE A.PART#='1111' ##Unable to know when last number is reached.
【问题讨论】:
-
注意:描述列实际上引用了 PART# 列中的部件号。
-
听起来你想要一个递归 cte。