代码之家  ›  专栏  ›  技术社区  ›  RSilva

SQL-从两个不同的表中选择行

  •  3
  • RSilva  · 技术社区  · 17 年前

    Table "Items"
    
    itemID
    itemTitle
    itemContent
    

    Table "MyList"
    
    userID
    itemID
    deleted
    

    给定一个用户ID,即使itemID不存在于“MyList”中,我如何从表“Items”中选择所有行并显示字段“deleted”?

    查询结果示例:

    itemID | itemTitle | deleted | userID
    -------------------------------------
    1      | Title1    | 1       | 2
    2      | Title2    | 0       | 2
    3      | Title3    | (null)  | (null)
    4      | Title4    | (null)  | (null)
    

    谢谢

    3 回复  |  直到 17 年前
        1
  •  15
  •   Sean Bright Sean Stinehour    17 年前
    SELECT I.itemID, I.itemTitle, M.deleted
    FROM
        Items I
        LEFT OUTER JOIN MyList M ON M.itemID = I.itemID
    WHERE M.userID = 9
    

    编辑: 根据OP的评论:

    SELECT I.itemID, I.itemTitle, M.deleted, M.userID
    FROM
        MyList M
        LEFT OUTER JOIN Items I ON I.itemID = M.itemID
    WHERE M.userID = 9
    
        2
  •  0
  •   RSilva    17 年前

    我不确定这是否是最好的方法,但它返回了我一直在寻找的东西:

    select itemID, itemTitle, deleted, userID
    FROM(
    SELECT i.id_itemID, i.itemTitle, M.deleted, M.userID
    FROM
        MyList M
        right OUTER JOIN Items I ON I.itemID= M.itemID
    ) as MyTableItems
    where itemID = 3 or itemID is null
    
        3
  •  0
  •   Chani Poz    12 年前

    您可以使用 outer join :

    select a.itemId, a.itemTitle, b.deleted
    from Items a left outer join MyList b
    on a.itemId = b.itemId