mysql - 通过使用 LIMIT 1 和 WHERE 子句匹配表之外的列值的 SELECT 子查询来连接表

标签 mysql join subquery

我尝试使用子查询 JOIN 一个表,以将数据限制为最后一行,匹配其他 FROM 或 JOINed 表中的某些值:

SELECT

  t1.column1,
  t1.column2,
  t2.column1,
  t3.column2

FROM

  table1 t1

JOIN 
(
    SELECT column1 
    FROM table2 
    WHERE t1.column2 > table2.column1
    ORDER BY table2.date DESC
    LIMIT 1

) t2 

JOIN table3 t3 ON t2.column1=t3.column2

出现错误:“where 子句”中存在未知列 t1.column2。似乎我无法处理子查询中的其他列。

我想做的事情可能吗? 如果是这样,我做错了什么/我还可以尝试什么其他方法?

最佳答案

在 MySQL 中,单个查询中的隐式和显式连接会产生问题。当存在另一个显式 JOIN 时,您不能使用基于嵌套 SELECT - FROM - WHERE 查询的隐式 JOIN

尝试以下。

SELECT *
FROM table1 t1
INNER JOIN  table2 t2 ON t1.column2 > t2.column1
LEFT OUTER JOIN table3 t3 ON t2.column1=t3.column2

关于mysql - 通过使用 LIMIT 1 和 WHERE 子句匹配表之外的列值的 SELECT 子查询来连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58622610/

相关文章:

JavaFX 与 MySql 登录表单 - NullPointerException

MySql 更新时,有条件地选择另一个表

MYSQL:当没有值时返回零,按月分类

mysql - 在 MySQL 中使用子查询

Hibernate 子查询 detachedCriteria

arrays - postgresql:任何子查询返回数组

Android - 单击按钮时插入 mysql 数据库

php - PHP/MySQL 数据透视表

php - 对连接中的选择结果进行计数

c# - 如何连接两个表,以便结果包含第一个表的值之间的第二个表的值