sql - 在两个条件上使用左连接的 Access-SQL 查询中缺少值

标签 sql join criteria

我在查询时遇到问题,并且对发生的情况没有任何想法。我有一个表 T1:

StoreID Product ProductShipped
KH00137 Super   18
KH00137 Regular 12

另一个表 T2,仅共享一些 StoreID:

StoreID Product Other data…
KH00137 Super   …
KH00137 Regular …

我尝试使用以下查询将 StoreID 和 Product 上的 T2 左连接:

SELECT T1.StoreID, T2.StoreID, T1.Product, T1. ProductShipped
FROM T1 LEFT JOIN T2 ON (T1.Product = T2.Product) AND (T1.StoreID = T2.StoreID);

但由于某种原因,它不显示 T2 StoreID 字段之一,即使它似乎已成功连接到另一个字段:

T1.StoreID  T2.StoreID  T1.Product  T1.ProductShipped
KH00137                 Super       18
KH00137     KH00137     Regular     12

有什么想法吗?

最佳答案

没有理由假设它已成功加入。输出数据第一行中的三个非 NULL 字段中的每一个都来自 table1。

这向我表明实际上根本没有连接。

  • 测试您的数据是否存在空格和大写/小写不匹配的情况。


使用LENGTH()类型的函数可能会显示一个字符串实际上与另一个字符串不同。 (一个Super可能有5个字符长,另一个表中的Super可能在末尾有一个空格并且有6个字符长。或者可能是类似的东西StoreID?)

此外,这也是支持加入文本字段的原因之一。通过将外键 ID 保留为数字(例如整数),您几乎不会经常遇到此问题,即使遇到此问题,也很容易调试和纠正。

祝你好运。

关于sql - 在两个条件上使用左连接的 Access-SQL 查询中缺少值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13458497/

相关文章:

php - 将 CSV 文件加载到 MySQL 中返回错误

mysql - 在 MySQL 的 JOIN 上设置 LIMIT

Hibernate Criteria 通过作为限制类实例的对象进行限制

grails - Grails:如何通过命名查询和其他条件关闭来获取单个项目

sql - 我应该如何保持准确记录汇总多个表格?

SQL 列名称或提供的值的数量与表定义不匹配

sql - 从 Oracle 迁移到 PostgreSQL 时对 sibling BY 和 rownum 进行 ORDER

来自邮政编码的mysql城市名称

php - 如何分解由 group_concat[distinct] 合并的值?

java - Hibernate 外键标准过滤器