来自2个DB的MYSQL查询为第二个DB提供NULL

时间:2012-08-13 09:59:20

标签: mysql left-join multiple-databases

这是PHP mysql LEFT JOIN output

的持续故事

我现在已对第二个数据库(Cu.data)进行了修改,数据库表格如下:

mysql> desc ins.data;
+-------------------+------------------+------+-----+---------------------+----------------+
| Field             | Type             | Null | Key | Default             | Extra          |
+-------------------+------------------+------+-----+---------------------+----------------+
| ID                | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| Date              | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
| Number            | text             | NO   |     | NULL                |                |
| Text              | text             | NO   |     | NULL                |                |
| Email             | text             | NO   |     | NULL                |                |
| TargetID          | varchar(20)      | NO   |     | NULL                |                |
| CSW               | text             | NO   |     | NULL                |                |
| TSW               | text             | NO   |     | NULL                |                |
| Key               | text             | NO   |     | NULL                |                |
| CType             | text             | NO   |     | NULL                |                |
+-------------------+------------------+------+-----+---------------------+----------------+
10 rows in set (0.00 sec)

mysql> desc Cu.data;
+----------+---------------+------+-----+---------+-------+
| Field    | Type          | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| Title    | decimal(15,0) | NO   |     | NULL    |       |
| Cu       | varchar(45)   | NO   |     | NULL    |       |
| Co       | varchar(25)   | NO   |     | NULL    |       |
| Ci       | varchar(25)   | NO   |     | NULL    |       |
| SID      | int(12)       | NO   |     | NULL    |       |
| TargetID | varchar(20)   | NO   | MUL | NULL    |       |
| SType    | varchar(12)   | NO   |     | NULL    |       |
+----------+---------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

我的查询有点像:

mysql> SELECT ins.data.Date,  ins.data.Number,  
ins.data.Email, ins.data.TargetD, ins.data.CSW, 
ins.data.TSW, ins.data.CType, Cu.data.Cu, 
Cu.data.SID, Cu.data.Co,
Cu.data.Ci, Cu.data.SType 
FROM ins.data 
LEFT JOIN  
Cu.data ON (ins.data.TargetID = Cu.data.TargetID);

输出显示ins.data(第一个数据库)中所有需要的值但是来自Cu.data的所有值都是'NULL'

TargetID是数据库之间的“链接”。即。使用TargetID我可以在数据库之间映射数据。

当人们将数据插入其中时,ins.data上的数据正在缓慢增加。 Cu.data是静态的,它可能每年更新一次。

由于我从未使用PHP,我决定利用我的bash编程技巧。通过cron脚本发送带有数据库中提取数据的电子邮件。脚本运行完美,但缺少一些数据。

现在问题;为什么我的SQL子句只从ins.data输出数据??

1 个答案:

答案 0 :(得分:1)

在调查连接条件问题时,首先要看的是列是否相互兼容(即相同的类型和存储大小)。

对于文本列,可能还存在空格和不可打印字符的问题,这些字符可能无法轻易找到。