回答

收藏

执行同一表中多列内部联系

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

我有一个场景,我有点坚持。假设我有一个关于颜色的调查,一个用于颜色数据,另一个用于人们的答案。) T7 K9 I, H2 N/ d& c; K% t6 G0 l! \
tbColors  {( t/ F2 f$ _/ x$ r7 |: L/ p) @
color_code ,color_name   blue     2     green          yellow'     4     ,'red'tb答案
1 w4 ?! W6 h1 n. Q7 Z5 }3 b7 Zanswer_id  , favorite_color  , least_favorite_color   , color_im_allergic_to    1     ,       1         ,       2                            3      2     ,       3         ,       1                            4    3     ,       1         ,       1                            2    4     ,       2         ,       3                            4对于显示,我想写一个答案表SELECT,但要使用tbColors中的color_name列。7 l; E. \) H0 F5 ~* V( h& L
我知道做到这一点的最愚蠢方法:在FROM部分中命名tbColors三次,每列替换使用不同的别名。/ ^  L8 O; F( Q) G
一种非愚蠢的方式看起来怎么样?
& R# w7 m) H: Y7 c, B9 V) Q% h8 b1 t                                                               
$ R$ _; Q! W( ?* ?4 k0 Y4 q    解决方案:                                                               
& }$ m2 Z8 R7 N5 W9 `                                                                这似乎是一条路:
5 v& ]+ \  D" GSELECT  A.answer_id  ,C1.color_name AS favorite_color_name  ,C2.color_name AS least_favorite_color_name  ,C3.color_name AS color_im_allergic_to_nameFROM tbAnswers AS AINNER JOIN tbColors AS C1  ON A.favorite_color = C1.color_codeINNER JOIN tbColors AS C2  ON A.least_favorite_color = C2.color_codeINNER JOIN tbColors AS C3  ON A.color_im_allergic_to = C3.color_code我敢说这是一个非常标准的查询,而不是愚蠢。这也假设所有列都将有效。否则,将是所有的INNER JOIN替换为LEFT JOIN
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则