我正在尝试将一些自定义CMS数据库迁移到Wordpress,到目前为止它一直是一个活生生的地狱。我正在使用WP所有导入插件,所以我需要一个整洁的单一。csv导出,其中包含来自此自定义cms数据库的多个表的数据。
那么,这些是我想要连接的两个表中的列:
`eo_items`
| cat_id | identificator | create_date |
---------------------------------------------
| 1 | Title of the post | 1283786285 |
`eo_items_trans`
| item_id | lid | name | s_desc | l_desc |
---------------------------------------------------------
| 1 | 33 | Title of the post | excerpt | content |
期望的结果应该是:
| item_id | lid | name | s_desc | l_desc | cat_id | create_date |
--------------------------------------------------------------------------------
| 1 | 33 | Title of the post | excerpt | content | 1 | Some date |
下面是我使用的脚本:
SELECT DISTINCT
eo_items_trans.item_id,
eo_items_trans.lid,
eo_items.cat_id,
DATE_FORMAT( eo_items.create_date, '%d.%m.%Y' ) create_date,
eo_items_trans.s_desc,
eo_items_trans.l_desc,
eo_items_trans.name
FROM eo_items_trans
LEFT JOIN eo_items ON ( eo_items_trans.name = eo_items.identificator )
这个代码的问题是,在结果表一些日期列是NULL,我不知道如果结果是我需要的,因为表有大约2000行,我不知道如何交叉检查类别id是否正确填充。
这是我第一次用MySQL做这样的事情,所以我真的不确定这个过程是否适合我想要实现的目标。
如果你需要澄清,请问。
编辑: eo_items
表比eo_items_trans
表多300行,所以eo_items_trans
表中没有相应的记录。我猜这应该反映在查询,以及?
由于您使用的是LEFT JOIN
,因此对于eo_items_trans
中没有oe_items
条目的任何行,将返回NULL
s。这可能意味着eo_items.identificator
为空,或者与名称不完全匹配(大小写敏感)。
您必须调查并清理eo_items_trans
中缺少eo_items
中预期行的数据。
您的NULL结果似乎来自eo_items_trans记录,在eo_items表中没有相应的条目,或者来自eo_items记录,其中create_date为NULL。
您可以通过执行以下操作轻松地交叉检查检查
eo_items_trans中是否有记录在eo_items中没有对应的条目:
SELECT DISTINCT eo_items_trans.name FROM eo_items_trans
where NOT EXISTS (
SELECT * FROM eo_items
where eo_items.identificator = eo_items_trans.name
)
如果这产生更多的行,那将是eo_items_trans.name记录,而在eo_items中没有对应的记录。如果这是您的问题,请在主查询中执行JOIN,而不是左连接
对于eo_items中的空日期,您可能需要这样检查
SELECT * from eo_items WHERE create_date IS NULL
如果你在这里找到记录,这就是你在主查询中的NULL值来自