【问题标题】:SQLite INNER JOIN - How to output only one of the common columns the two tables haveSQLite INNER JOIN - 如何仅输出两个表具有的公共列之一
【发布时间】:2022-01-27 19:58:57
【问题描述】:

假设我有两张桌子:

  1. 课程与列:课程ID,名称

  2. studentlessons 列:课程ID、年龄

我正在尝试执行此操作:

SELECT lessons.*, studentlessons.* FROM studentlessons   
JOIN lessons WHERE studentlessons.lessonID = lessons.lessonID

但结果是一个包含列的表格:

课程 ID、姓名、课程 ID(1)、年龄

我想避免使用课程 ID(1),所以我想要的输出必须是:

课程ID、姓名、年龄

我知道我可以使用这种语法:

SELECT lessons.lessonID, lessons.name, studentlessons.age FROM studentlessons   
JOIN lessons WHERE studentlessons.lessonID = lessons.lessonID

但我不能因为其他一些原因。

是否有任何纯粹的 SQLite 语法可以给我想要的输出?

【问题讨论】:

    标签: android sqlite join android-sqlite natural-join


    【解决方案1】:

    你想要的是NATURAL JOIN:

    SELECT * FROM studentlessons NATURAL JOIN lessons 
    

    它只返回lessonID 中的一列。
    这些表在具有相同名称的列上隐式连接。

    请参阅demo

    【讨论】:

    • 刚试了,没用
    • @Student 代码在语法上是正确的,正如您在演示中看到的那样,它返回了您想要的列。什么不起作用?
    • 我刚刚在 Android Studio 和 SqliteStudio 中尝试了这段代码,它返回了 courseID:1 列。
    • 抱歉,我没有意识到它不需要 WHERE 子句。成功了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 2018-10-22
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多