派生表的where子句中的mysql派生表

标签 mysql sql entity-framework

我有一些 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/

相关文章:

php - SQL在数据库中工作,但在PHP中超时

mysql - 在sql中的列值之间创建行

.net - 部署后 Entity Framework 与 SQLite 数据库的连接不起作用

python - 查询集 : LEFT JOIN with AND

php - SQL 和 Codeigniter 计算定期付款的复利

entity-framework - Entity Framework - 创建 csdl、ssdl 和 msl 文件

c# - Distinct 子句导致类型错误

php - 添加 Rest API 响应到 MySQL 数据库

php - 存储的数据取自mysql

mysql - 查看分数