回答

收藏

sql删除重复行的自联接表

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

我有下表:2 @1 e7 w& C% O
╔════════╦════════════╗║ 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)
. ]9 t$ P2 {3 T* _% D! E& @用户210,3)
! N. K: y4 g( H" N& [9 B为此,我已经完成了以下查询:
; Q; z5 d7 ~0 l0 A' USELECT 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)* U  f5 U0 N- w2 n3 A; F" m
对于用户2:(10,3),(3,10)5 W7 K  Y; p  E  p
(10,3)和(3,10)对我来说没有区别6 ?4 m- m* T4 ~1 W- `* P: x
如何删除重复行?
: _8 z1 _/ B3 B# L0 C. Y) @: `+ {2 [tnx
! O! m! _. f7 [, {/ k+ V2 `                                                               
& x6 z$ V; e  w4 ]! D    解决方案:                                                                # W. j8 M. n. B( i8 d  d
                                                                使用您的标识符:
5 L6 e- m. B, B  a7 KSELECT a.userId ,a.LanguageId,b.LanguageId  FROM knownlanguages a inner join knownlanguages b      on a.userID=b.userID and a.LanguageId 测试:FOT表:$ X( W9 y* S& o9 n
create table t ( u int,l int);insert into t values (     1,         2),(    1,            7),(    1,      8),(   2,       10),(    2,        3);查询是:- E' G" C* n  E0 o. z  P+ r
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 (结果)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则