我遇到了一个查询问题,并且对于正在发生的事情已经用完了。我有一张桌子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
有什么想法吗?
答案 0 :(得分:2)
没有理由认为它已成功加入。输出数据第一行中的三个非NULL字段中的每一个都来自table1。
这向我表明实际上根本没有加入。
使用LENGTH()
类型的函数可能会显示一个字符串实际上与另一个字符串不同。 (一个Super
可能是5个字符长,另一个表中的Super
最后可能有一个空格,长度为6个字符。或者可能是StoreID中类似的东西?)
此外,这是支持 不 加入文字字段的一个原因。通过将foriegn密钥ID保持为数字(例如整数),您几乎不会经常遇到此问题,即使您这样做也很容易调试和纠正。
祝你好运。