回答

收藏

SQL内部连接两个具有相同列名的表

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

我有两个表,它们的列数是可变的。(我不知道有多少列或名称会是什么),例如表A和表B。) L& \8 E; {4 }$ Q, T( d9 i, l+ p
表A:
) Z: k  R$ V3 M2 AID | B_ID | {variable}
+ N4 h2 N0 U) ]& f* P表B
  m8 X* {9 {; e' H0 e/ oID | {variable}5 P  A0 K: ]  f7 @" a0 y  ]
询问:
7 u$ [! r$ G; E# k( _* Z4 JSELECT TableA.*, TableB.* FROM TableA INNER JOIN TableB ON TableA.B_ID= TableB.id;4 }& n2 p7 M( Z. y; p
当TableA和TableB都具有相同名称的列时,我无法区分两个不同的列。例如,两个表都有“名称”列,此查询将导致:
9 k% I) f. u0 d& Z9 o2 @$ cID | ID | B_ID | NAME | NAME |3 K) S5 |' A  B* T7 l1 t( G
1 | 35 | 35   | bob  | jim  |
: q- m8 C4 [, }( b% U1 k  Y5 I6 m我正在寻找一种区分两个表的方法。最好使用预定义的列名称,例如。0 b- B% r& u5 L# H; i8 k6 G3 \
TableA_ID | TableB_ID | TableA_B_ID | TableA_NAME | TableB_NAME |; C# T  v, d. X& y1 w+ W! U  `
        1 |        35 |          35 |         bob |         jim |: Q5 _1 Z* r  v7 {- R
我知道“ AS”关键字,但是问题是我不知道这些列名称将是什么。(我不知道TableA或TableB是否将具有“名称”列)
7 t. O+ i* k# M! z# c所以我的问题是- M3 u; M0 e: t- u& p
当两个表的列名相同时,如何用INNER JOIN区分两个表的列?
  F' _: U- E8 r' e5 d7 C9 g& n4 R我正在使用SQLite3。( b  R2 r2 n0 A5 M, x1 s
                8 M7 [1 C: @! t/ L
解决方案:8 O7 `1 w5 ~6 m
               
1 `: [2 X4 ], V, s
3 }  ?: w" p9 Z1 W* ]0 S! p$ n
$ S0 K: z) G# b/ B6 X                您的结果集(针对您的查询)应该具有所有TableA列,然后是所有TableB列,因此,当您到达第二个ID列时,您就知道自己已经进入了TableB数据。
5 [$ L: t. `1 z, H( H, B5 s5 m就是说,对于您查询的两个表中的所有数据,您在功能上一无所知,这对我来说似乎很奇怪。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则