MySQL 内部连接 2 表


MySQL Inner Join 2 tables

SELECT *
FROM tableA a
INNER JOIN tableB b
ON  a.someColumn = b.otherColumn
INNER JOIN tableC c
ON b.anotherColumn = c.nextColumn

如果表 A 和表 B 在字段中具有相同的名称,该怎么办?如何使用:

<?
$name = mysql_fetch...
echo $name['a.title'] . ' ' . $name['b.title'];
?>

所以我可以从表 A 获取标题,从表 B 获取标题。因为现在,如果只使用$name['title']它会返回 tableA 的标题。不幸的是,上面的代码只给出了一个空字符串。

除了做select *,你也可以在列上放一个别名。

SELECT a.title AS 'a_title', b.title AS 'b_title'
-- ...

那么你的PHP将是这样的:

$name['a_title']

使用别名

SELECT  a.title AS TitleA,
        b.title AS TitleB,
        ...

从。。。

然后引用别名:

$name['TitleA']

停止使用 SELECT *

显式列出列,然后允许您根据需要为列添加别名。

SELECT a.title AS TableATitle, b.title AS TableBTitle, ...

而不是使用 SELECT *,您必须按名称调用字段。 执行此操作时,可以为每个别名分配一个别名。

SELECT a.title AS aTitle, b.title AS bTitle, etc...
SELECT *, a.title as atitle, b.title as btitle
FROM tableA a
INNER JOIN tableB b
ON  a.someColumn = b.otherColumn
INNER JOIN tableC c
ON b.anotherColumn = c.nextColumn