回答

收藏

sql删除重复行的自联接表

技术问答 技术问答 297 人阅读 | 0 人回复 | 2023-09-14

我有下表:
  y+ A( K, A3 j+ ^6 n2 @╔════════╦════════════╗║ USERID ║ LANGUAGEID ║╠════════╬════════════╣║      1 ║       ║║      1 ║       ║║      1 ║          8 8 8                                 8 8 8 8    8                                                                                                                                                8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  8                            8       8 8 8 8 8  8       8                                                   8                                                  8                      8                                                                       8                                                     8                                                        ║║     2 ║         10 ║║     2 ║      ║╚════════╩════════════╝现在,我想为每个用户创建所有可能的语言对,这意味着我希望结果是:用户1:(2、7)、(7、8)、(2、8)! f5 v; ^6 e2 G; {
用户210,3)
" N: s- f4 l3 m# ~% ?) q7 v为此,我已经完成了以下查询:8 Q& L# F* n# c
SELECT a.userId ,a.LanguageId,b.LanguageIdFROM knownlanguages a,knownlanguages b  WHERE a.userID=b.userID  AND a.LanguageIdb.LanguageId我得到的结果是用户12,7),(7,8),(2,8),(7,2),(8,7),(8,2)- L2 ]$ o+ H& l+ Q+ u! A
对于用户2:(10,3),(3,10), Z" H, A6 F+ L- ]  V1 Q& i; @/ m3 A/ m
(10,3)和(3,10)对我来说没有区别
! C* A% ]! A, n9 C5 w如何删除重复行?( ~# l* [4 T- u
tnx
/ x: H1 ]4 w5 r5 f; e1 `7 A                                                                ' l& O% F/ b( z0 J! E
    解决方案:                                                               
0 y, [" e2 N) N  @  i4 E                                                                使用您的标识符:
& F$ I4 Q' D6 @% ^8 ISELECT a.userId ,a.LanguageId,b.LanguageId  FROM knownlanguages a inner join knownlanguages b      on a.userID=b.userID and a.LanguageId 测试:FOT表:$ n  }+ O" w0 T1 |
create table t ( u int,l int);insert into t values (     1,         2),(    1,            7),(    1,      8),(   2,       10),(    2,        3);查询是:' Q: q+ v1 g9 K: M( {/ e& h$ z4 l
select t1.u,t1.l as l1,t2.l as l2from t t1 inner join t t2   on t1.u = t2.u and t1.l (结果)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则