我有一些 SQL(为了可读性从 Entity Framework 中删减)可以在 SQL Server 中使用,但不能在 MySQL 中使用。我假设这意味着我遇到了 MySQL 的限制但不能确定。
我有 3 个表:
具有 ProductId 和 AccommodationId 的产品
带有 AccommodationId 的住宿
有 RoomId 的房间
SELECT *
FROM (SELECT * FROM products) AS Project1
WHERE EXISTS(
SELECT *
FROM rooms
LEFT OUTER JOIN
(SELECT * FROM accommodations AS A WHERE Project1.AccommodationId = A.AccommodationId)
AS Project2 ON 1 = 1
)
我收到这个错误:
Error Code: 1054. Unknown column 'Project1.AccommodationId' in 'where clause'
我想了解这个错误,看看我是否可以更改我的代码以使 EntityFramework 生成兼容的 SQL。
谢谢
最佳答案
您不能加入 MYSQL 中的子查询并返回主 FROM 子句中的其他表之一。那是行不通的。
哇,那是一些非常难看的代码。我认为归结为以下几点。它只是以一种非常迂回的方式到达那里。
SELECT Project1.*
FROM products AS Project1
INNER JOIN accommodations AS A
ON Project1.AccommodationId = A.AccommodationId
关于派生表的where子句中的mysql派生表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368306/