所以说我有一张桌子
Dress(Dress_id, Colour, Value)
和另一个表
On_Loan(Dress_id, Start_date, End_date)
并且我有此查询,不确定该查询是否是相关的子查询
SELECT D.COLOUR,D.VALUE FROM DRESS WHERE D.DRESS_ID = (SELECT ON_LOAN.DRESS_ID FROM ON_LOAN WHERE ON_LOAN.DRESS_ID = D.DRESS_ID);
基本上,我想返回借来的衣服的颜色和值。我也这样查询过:
SELECT COLOUR,VALUE FROM DRESS INNER JOIN ON ON_LOAN WHERE DRESS.DRESS_ID = ON_LOAN.DRESS_ID);
两者都提供相同的输出,所以我想知道是否所有相关的子查询都可以通过联接转换为等效查询?
谢谢。
许多相关的子查询可以表示为JOIN
。实际上,关联子查询是一般意义上的一种连接。
但是如果您询问“简单” JOIN
运算符查询是否始终可用,答案为“否”。一个非常简单的示例是:
select t.*,
(select tt.x
from tt
where tt.y = t.y
order by tt.z
limit 1
) as z
from t;
当然,此can无需使用相关子查询即可表达。但是它不仅仅需要一个JOIN
操作。