1

下面是我编写的 SQL 代码,但我意识到事情正在被重复,这是不可接受的。我对 SQL 不是很熟悉,并且一直遇到问题,非常感谢任何帮助。我也编辑了这个,所以我知道这里有额外的表格,但这会减慢性能吗?

select distinct
ru.registername AS [1]
,lc.lifecyclename AS [2]
,s.statename AS [3]
,t.timername AS [4]
,t.lastexecuted AS [5]
from hsi.wfsrvrxlcstate wxs with (nolock)
join hsi.registeredusers ru with (nolock) on wxs.registernum = ru.registernum
join hsi.lcstate s with (nolock) on wxs.statenum = s.statenum
join hsi.lcxstate lxs with (nolock) on s.statenum = lxs.statenum
join hsi.lifecycle lc with (nolock) on lxs.lcnum = lc.lcnum
join hsi.lcstatextimer sxt on s.statenum = sxt.statenum
join hsi.lctimer t on sxt.timernum = t.timernum
join hsi.tasklist tl with (nolock) on t.actionnum = tl.tasklistnum
join hsi.tasklistxtask tlxa with (nolock) on tl.tasklistnum = tlxa.tasklistnum
join hsi.action a with (nolock) on tlxa.tasknum = a.actionnum
order by  registername, lastexecuted desc, lifecyclename

提前感谢所有帮助!

4

1 回答 1

0

如果不查看所有有问题的表格数据,就不可能回答您的问题:'(

...但是话虽如此,如果我被拒绝屈服于 DISTINCT 语句的复杂连接所阻碍,我通常会采用以下技巧。

在select语句中显示所有表涉及的字段。在你的情况下:

select distinct wxs.*, ru.*, s.*.....etc
from ... as per your original query
join ... as per your original query

执行查询并监控所有 table_name.id 列。重复行加上原始表很容易发现,因为它的主键将显示两次。您可能需要按所有 PK 排序以使其更容易被发现。

这将为您提供查找丢失的 FK 连接所需的线索。

祝你好运!

于 2013-01-29T15:11:36.633 回答