多对多关系中的最大值
我使用的是 SQL Server 2008,有 3 个表:x
、y
和 z
。 y
的存在是为了在 x
和 z
之间创建多对多关系。
x y z
-- -- --
id xid id
zid sort
上述所有字段都是int
。
我想找到针对任何 x
查找具有最高 sort
的 z
的最佳执行方法(不包括反规范化),并返回所有字段来自所有三个表。
示例数据:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
结果集应为 请
xid zid
--- ---
1 3
2 2
注意,如果存在多个具有相同最高 sort
值的 z
,那么我仍然只希望每个 x
一行代码>.
另请注意,在我的实际情况中,所有三个表中都有其他字段,我的结果集中将需要这些字段。
I'm using SQL Server 2008 and I have 3 tables, x
, y
and z
. y
exists to create a many-to-many relationship between x
and z
.
x y z
-- -- --
id xid id
zid sort
All of the above fields are int
.
I want to find the best-performing method (excluding denormalising) of finding the z
with the highest sort
for any x
, and return all fields from all three tables.
Sample data:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
Result set should be
xid zid
--- ---
1 3
2 2
Note that if more than one z
exists with the same highest sort
value, then I still only want one row per x
.
Note also that in my real-world situation, there are other fields in all three tables which I will need in my result set.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一种方法是使用子查询。然而,这仅适用于获取 Z 的 ID。如果您需要 x 和 z 表中的更多/所有列,那么这不是最佳解决方案。
这就是您可以执行此操作并返回所有表中的所有数据的方法。
One method is with a sub query. This however is only good for getting the ID of Z. If you need more/all columns from both x and z tables then this is not the best solution.
This is how you can do it and return all the data from all the tables.