我尝试使用子查询 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/