MYSQL内部联接结果为空

时间:2016-10-04 19:34:54

标签: mysql inner-join

我需要根据客户ID加入2个表。

我的表格是Table1 ='vbq-customers'和Table2 ='vbq-sales'

Table1的列是:Customer_id | First_name | last_name等.. Table2的列是:Receipt_nb | receipt_date | receipt_customer_code等..

我想加入Customer_id = receipt_customer_code

此查询的结果为空,尽管如果已检查是否存在要加入的类似信息。

BEGIN

DROP TABLE `vbq-sales-customers`;
CREATE TABLE `vbq-sales-customers`
AS

(SELECT * 
  FROM `vbq-sales` 
  INNER JOIN  `vbq-customers`
  ON `vbq-sales`.receipt_customer_code=`vbq-customers`.Customer_id

);

END`

任何人都可以帮我弄清楚我在这里缺少什么吗?

1 个答案:

答案 0 :(得分:0)

有几种可能性。最容易解释的是,一个(或两个)表是空的,包含零行。

或者,没有"匹配"的行。 vbq-sales中的任何行都没有receipt_customer_code表中的值等于Customer_id vbq-customers列中的值。

我们没有看到其中任何一列的数据类型。可能会在上进行隐式数据转换,或者我们可能会有不同长度的固定长度CHAR列(这些列不会相等。) Doh!请原谅我的Oracle。)

没有表格定义,我们只是在猜测。

我强烈建议您在将查询放入CREATE TABLE AS语句之前仅测试查询(即只是普通的SELECT语句)。您没有表明创建表格时出现任何错误,因此我们忽略了CREATE TABLE可能失败的其他原因。

我不知道BEGINEND的用途。这使得它看起来像是Oracle中的一个匿名块。但标识符周围的反引号非常MySQL。它的语法汇集令人费解。

如果问题是SELECT查询返回零行,只需调试即可。摆脱所有的CREATE TABLE AS和其他一切。

要检查存储在列中的实际内容,可以使用HEX()函数...然后包括不可打印字符在内的所有内容都将是可打印字符0-9A-F,您可以更仔细地查看。

我怀疑你可能在其中一个值中只有一些不可打印的字符,例如标签x'09',换行符x'0A',回车x'0D'