回答

收藏

在SQL中匹配多个键/值对

技术问答 技术问答 231 人阅读 | 0 人回复 | 2023-09-12

我存储元数据SQL! n* D- K4 C+ ]
Server在键/值表中。(我知道键/值不好,但这是用户提供的自由格式元数据,所以我不能将键转换为列。)用户需要能够给我任何一组键/值对,并有我返回所有符合所有这些条件的数据库对象。9 F" |# X0 f5 `
例如:
! s! ^7 T) C1 |Metadata:Id Key Value1  a   p1  b   q1  c   r2  a   p2  b   p3  c   r如果用户说a = p和b = q,我应该返回对象1(不是对象2,尽管它也有a = p,因为它有b = p。)
3 h6 M6 |: r% L要匹配的元数据在具有简单键/值架构的表值sproc参数中。我最接近的是:
( q. I9 e* Q- ]/ F/ vselect * from [Objects] as owhere not exists (  select * from [Metadata] as m  join @data as n on (n.[Key] = m.[Key])  and n.[Value] != m.[Value]  and m.[Id] = o.[Id])我的没有不匹配的行试图通过形成相反的方式来实现所有行匹配。这确实消除了元数据不匹配的对象,但它也返回了根本没有元数据的对象,所以效果不好。
& A- C( d) n4 U0 a! n谁能指出我的正确方向?(性能和正确性的加分。
, n  y* ?- {& x8 N  A8 W                                                               
# ~9 S4 V- h1 A3 \1 n( d    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则