【问题标题】:Join two tables, get all results from first table加入两个表,从第一个表中获取所有结果
【发布时间】:2021-09-09 14:57:00
【问题描述】:

所以我有两张桌子。假设这是表格的结构:

     TABLE A      |        TABLE B       |
-----------------------------------------|
    ID   |   div  |   ID   |  date | val |
-----------------------------------------|
     A   |   a    |    A   |   d1  |  22 |
     B   |   b    |    B   |   d2  |  10 |
     C   |   c    |    C   |   d3  |  9  | 
     F   |   l    |    F   |   d1  |  10 |

我想要的是得到这样的结果:

 row 1: A, a, null, null
 row 2: B, b, d2, 10 
 row 3: C, c, null, null
 row 4: F, l, d1, 10

这是一个左联接,但我只想检索 val = 10 的值。

我正在使用 SQLite。我尝试了许多不同线程的答案,但没有成功。

【问题讨论】:

  • where 子句应用于join结果。在您的情况下,这样的where 子句将排除b.val 中具有null 值的任何行,因为b 中没有匹配的行。因此,您需要在联接之前或联接期间过滤表。在连接谓词中添加and b.val = 10 是这两个选项中的后者,也是正常的选择。

标签: sql sqlite join


【解决方案1】:

您正在寻找left join:

select a.*, b.date, b.val
from a left join
     b
     on a.id = b.id and b.val = 10
order by a.id;

【讨论】:

  • 对不起,我忘记了 where 子句。你能再检查一下我的问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多