MySQL JOIN使数据库列名冲突

时间:2013-04-27 06:30:32

标签: mysql database pdo left-join

我正在为客户开发项目,我需要将2个Drupal和1个WordPress安装迁移到1个单独的WordPress CMS中。我必须保持完全相同的URL,并确保新网站与当前的混乱几乎相同。

我已经在下面提出了这个SQL查询的怪物,以提取所有Drupal帖子以便插入到WordPress中。

我现在的问题是,下面的查询中有2个名为title的MySQL表列....

SELECT n.nid, n.uid, FROM_UNIXTIME( n.created ) created, FROM_UNIXTIME( n.changed ) modified, n.TYPE, n.status, n.title, r.teaser, r.body, u.dst url, m.path, m.title, m.description, m.keywords
FROM drupal_node n
LEFT JOIN drupal_node_revisions r ON n.nid = r.nid
LEFT JOIN drupal_url_alias u ON CONCAT(  'node/', n.nid ) = u.src
LEFT JOIN drupal_simplemeta_data m ON CONCAT(  'node/', n.nid ) = m.path
WHERE n.TYPE
IN (
 'blog',  'story',  'page',  'forum',  'largeimage',  'error'
)

因此,当我查看结果时,这会导致问题,因为我的title结果将只是第一列。

有没有办法根据我的结果重命名它?还是其他一些技巧?

var_export()显示它只暴露1 title

我使用PHP和类似的东西来返回一个PDO对象......

$result = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach($result as $row) {

    echo $row->title;

}

1 个答案:

答案 0 :(得分:2)

我认为您可以使用AS为变量添加新名称

SELECT n.nid, n.uid, FROM_UNIXTIME( n.created ) created, FROM_UNIXTIME( n.changed ) modified, n.TYPE, n.status, n.title AS mastertitle, r.teaser, r.body, u.dst url, m.path, m.title AS slavetitle, m.description, m.keywords

现在你可以单独打电话了

echo $row->mastertitle;
echo $row->slavetitle;