我试图从同一服务器上具有完全相同结构的2个数据库中进行选择,db2是db1的延续。问题是我试图从两个数据库中选择相同的信息“不同的唯一ID”,我需要格式化的查询:link_id AS id,标题AS标题使用$ row ['title']等正确显示信息这是我的询问。
$CONF['mysql_query'] = 'SELECT db1.l.link_id AS id, db1.l.title AS title, db2.r.link_id AS id, db2.r.title AS title FROM db1.links AS l LEFT OUTER JOIN db2.links AS r ON (r.link_id = l.link_id) WHERE l.link_id IN ($ids)';
为什么不允许我对这两个数据库使用标题AS标题等?有没有办法可以做到这一点?感谢。
答案 0 :(得分:2)
SELECT列表中不能有2个具有相同名称的列。这就是为什么你不能有两个id
或两个title
。
如果要加入这两个表,请使用:
$CONF['mysql_query'] = "
SELECT l.link_id AS idL
, l.title AS titleL
, r.link_id AS idR
, r.title AS titleR
FROM db1.links AS l
LEFT OUTER JOIN db2.links AS r
ON (r.link_id = l.link_id)
WHERE l.link_id IN ($ids)
";
上面将显示满足第一个表中l.link_id IN ($ids)
条件的所有ID和标题以及第二个表中的相应标题。第3和第4列中的NULL将显示第二个表中是否没有相应的行。
如果您想要UNION
,例如第一个表中的所有行(满足l.link_id IN ($ids)
条件)加上第二个表中的所有行,使用:
$CONF['mysql_query'] = "
SELECT link_id AS id
, title AS title
FROM db1.links AS l
WHERE l.link_id IN ($ids)
UNION
SELECT link_id AS id
, title AS title
FROM db2.links AS r
";
这可能会显示具有相同ID的行,每个表都有一行。甚至重复行。但是,通过放置UNION ALL
而不是UNION
,可以轻松避免重复行。
答案 1 :(得分:0)
在单引号中使用别名标题,它将允许你
select t1.Title as 'title' , t2.Title as 'title' from Table1 t1,Table t2