我需要根据客户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`
任何人都可以帮我弄清楚我在这里缺少什么吗?
答案 0 :(得分:0)
有几种可能性。最容易解释的是,一个(或两个)表是空的,包含零行。
或者,没有"匹配"的行。 vbq-sales
中的任何行都没有receipt_customer_code
表中的值等于Customer_id
vbq-customers
列中的值。
我们没有看到其中任何一列的数据类型。可能会在上进行隐式数据转换,或者我们可能会有不同长度的固定长度( Doh!请原谅我的Oracle。)CHAR
列(这些列不会相等。)
没有表格定义,我们只是在猜测。
我强烈建议您在将查询放入CREATE TABLE AS语句之前仅测试查询(即只是普通的SELECT语句)。您没有表明创建表格时出现任何错误,因此我们忽略了CREATE TABLE可能失败的其他原因。
我不知道BEGIN
和END
的用途。这使得它看起来像是Oracle中的一个匿名块。但标识符周围的反引号非常MySQL。它的语法汇集令人费解。
如果问题是SELECT查询返回零行,只需调试即可。摆脱所有的CREATE TABLE AS和其他一切。
要检查存储在列中的实际内容,可以使用HEX()函数...然后包括不可打印字符在内的所有内容都将是可打印字符0-9A-F
,您可以更仔细地查看。
我怀疑你可能在其中一个值中只有一些不可打印的字符,例如标签x'09'
,换行符x'0A'
,回车x'0D'
等