innerjoin 2列?

oipij1gg  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(275)

我有两张table。 dance_list -表名 type_of_dance -列名(只有一列) motion_list -表名 type_of_motion | studio 我已经把两列连在一起了 type_of_motion 以及 type_of_dance . 我叫这张新table Physical .

SELECT
    dan.*
FROM dance_list dan
Inner JOIN motion_list mot
    ON mot.type_of_motion like cast(dan.type_of_dance as varchar)

显示以下内容: Type_of_dance 现在,我想展示 Physical 与列一起 studio_nametype_of_dance table。
我希望它看起来像: Type_of_dance | Studio_name 这是什么类型的连接?我对将第二列连接到已内部连接的表感到困惑。谢谢!

62o28rlo

62o28rlo1#

如果我理解正确,您已经成功地联接了这两个表(否则,您的查询将返回一个空的resultset)。然后,只需展开 select 条款:

SELECT dan.type_of_dance, mot.studio
FROM dance_list dan
INNER JOIN motion_list mot
    ON mot.type_of_motion like cast(dan.type_of_dance as varchar)

这个 join 情况要复杂得多。首先, like 右操作数上没有任何通配符相当于相等检查。而且,我想你不需要 cast (假设两列都是字符串)。这就足够了:

SELECT dan.type_of_dance, mot.studio
FROM dance_list dan
INNER JOIN motion_list mot
    ON mot.type_of_motion = dan.type_of_dance

最后:根据您的查询,表 motion_list 已经有你想要的信息了。基本上 join 简单过滤器 motion_listtype_of_motion 存在于 dance_list . 所以你可以用 exists 相反,这使得意图更加清晰:

SELECT mot.*
FROM motion_list mot
WHERE EXISTS (
    SELECT 1 FROM dance_list dan WHERE dan.type_of_dance = mot.type_of_motion
)

相关问题