【问题标题】:SQL - retrieve in two tablesSQL - 在两个表中检索
【发布时间】:2014-04-18 06:02:29
【问题描述】:

如果我使用普通数据连接

 select table1.Id , Column , Number from table1, table2 where
   table1.Id = table2.Id

结果:

  _____________
   Id  Column Number
   ab | A | 3 
   ab | A | 5 
   ab | A | 8 
   bc | B | 1 

问题,如何在 table2 中获取三条记录(按 id 分组)。 如果没有足够的三条记录,则显示为空。

不使用PL/SQL有我想得到的预期结果

 Id  Column Number 
   ab | A | 3 
   ab | A | 5 
   ab | A | 8 
   bc | B | 1 
   bc | B | null 
   bc | B | null  

这是表格信息。 谢谢你的帮助


表1

Fields: Id,Column
data:
  ab     |   A   
  bc     |   B  

(id是talbe1的主键,table2没有主键

table2
Fields:Id,Number
ab    |   3 
ab    |   5 
ab    |   8 
bc    |   1

【问题讨论】:

  • Jeff Atwood 可能在 blog.codinghorror.com/a-visual-explanation-of-sql-joins 上发布了关于联接的权威帖子
  • 左连接怎么样?
  • 似乎是一个外部连接.. 但我认为您没有正确考虑您的数据.. 例如?你怎么知道没有 4 行并且 ab 也没有丢失一个?
  • 我认为你应该申请左联接。对于'ab rows = bc rows',你应该从你的代码中处理这个。

标签: mysql sql


【解决方案1】:

您可以使用 LEFT JOIN 来实现结果

标识 |专栏 |编号


ab |一个         | 3

ab |一个         | 5

ab |一个         | 8

公元前 | B         | 1

公元前 | B         |空

公元前 | B         |空

使用以下 T-SQL 语句:

SELECT t1.Id, t1.[Column], t2.Number
FROM table1 t1
LEFT JOIN table2 t2 on t1.Id=t2.Id

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多