2

我在查询时遇到问题,并且对正在发生的事情没有任何想法。我有一张桌子 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

有任何想法吗?

4

1 回答 1

2

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

这向我表明实际上根本没有加入。

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


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

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

祝你好运。

于 2012-11-19T16:59:24.397 回答