我注意到,在使用多个 JOIN 进行查询时,除非为其中一个表名指定一个别名,否则我的查询不起作用。
这是一个简单的例子来解释这一点:
This doesn't work:
SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases on items.date=purchases.purchase_date
group by folder_id
This does:
SELECT subject
from items
join purchases on items.folder_id=purchases.item_id
join purchases as p on items.date=p.purchase_date
group by folder_id
有人可以解释一下吗?
您在查询中使用同一个表 Purchasing 两次。您需要通过给出不同的名称来区分它们。
您需要提供一个别名:
When the same table name is referenced multiple times
想象一下两个人拥有完全相同的约翰·多伊。如果您致电约翰,两人都会回复您的电话。您不能给两个人提供相同的名字,并假设他们知道您在打电话给谁。同样,当您给出名称完全相同的相同结果集时,SQL 无法识别从哪一个结果集中获取值。您需要给出不同的名称来区分结果集,这样 SQL 引擎就不会混淆。
Script 1: t1 and t2这里是别名
SELECT t1.col2
FROM table1 t1
INNER JOIN table1 t2
ON t1.col1 = t2.col1
When there is a derived table/sub query output
如果一个人没有名字,你打电话给他们,由于你无法打电话给那个人,他们不会回复你。同样,当您生成派生表输出或子查询输出时,它对于 SQL 引擎来说是未知的,并且不会调用什么。因此,您需要为派生输出命名,以便 SQL 引擎能够正确处理该派生输出。
Script 2: t1这里是别名。
SELECT col1
FROM
(
SELECT col1
FROM table1
) t1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)