我做了一个查询,连接同一个表- users-两次,与连接。
SELECT * from tbl1
JOIN tbl2 ON tbl2.USER_ID = tbl1.ID
JOIN tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID
WHERE tbl1.ID = 45
对该表的第一次调用是常规的,第二次我使用AS使用别名。当我在phpMyAdmin中得到结果时,我看到结果没有被称为别名,而是使用通常的名称,就像这样:
USERNAME => Ted, ID_NUMBER=>33322552,…用户名=> Josh…
如何读取关联数组
在这个查询中,您没有使用别名,而是两次引用了一个名为tbl2的真实表。这行不通。
SELECT * from tbl1
JOIN tbl2 ON tbl2.USER_ID = tbl1.ID
JOIN tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID
// ^^^^ there's no alias here, it's still tbl2
WHERE tbl1.ID = 45
重写为:
SELECT * from tbl1
JOIN tbl2 AS t2A ON t2A.USER_ID = tbl1.ID
JOIN tbl2 AS t2B ON tbl1.ID = T2B.TEACHER_ID
WHERE tbl1.ID = 45
as
关键字可选。
这样就不会误解您所指的是哪个版本的tbl2。
两个查询的差值
注意,您也可以将查询2重写为:
SELECT * from tbl1
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) OR (tbl2.teacher_ID = tbl1.id)
WHERE tbl1.ID = 45
在这种情况下,您可以将查询1重写为:
SELECT * from tbl1
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) AND (tbl2.teacher_ID = tbl1.id)
WHERE tbl1.ID = 45
看到区别了吗?