mysql - 如何重写此查询以使其工作,mysql left join multiple from
问题描述
主要问题在于这个问题: here。
重要的想法是尝试解决这个问题:
这是简单的示例查询问题
CREATE TABLE a ( id int );
CREATE TABLE b ( id int );
CREATE TABLE c ( id int );
SELECT id
, (SELECT MIN(b.id)
FROM b LEFT JOIN c ON b.id = c.id
AND c.id = a.id
WHERE b.id = a.id
) AS something
FROM a
;
The column 'a.id' in on clause is unknown (within LEFT JOIN)
现在,尝试解决我想尝试使用此查询的问题:
select drf2.opcion
from respuestas r2, opciones o2
left join detalle_respuesta_fija drf2 on o2.id_opcion = drf2.opcion and r2.id_respuesta
where o2.pregunta = 857
and r2.id_respuesta = 190968
#1054 - La columna 'r2.id_respuesta' en on clause es desconocida
我需要查询返回这个(示例):
+--------
|Result
+--------
| id
| id
| NULL
| id
| NULL
+--------
.
解决方案
切勿在FROM
子句中使用逗号。 始终使用正确、明确、标准 JOIN
的语法。
在你的情况下,那将是:
select drf2.opcion
from respuestas r2 join
opciones o2
on r2.id_respuesta = o2.? left join -- what column is used for the `JOIN`???
detalle_respuesta_fija drf2
on o2.id_opcion = drf2.opcion
where o2.pregunta = 857 and r2.id_respuesta = 190968;
join
如果前两个表之间没有键,只需使用cross join
:
select drf2.opcion
from respuestas r2 cross join
opciones o2 left join
detalle_respuesta_fija drf2
on o2.id_opcion = drf2.opcion and drf2.respuesta = r2.id_respuesta
where o2.pregunta = 857 and r2.id_respuesta = 190968
推荐阅读
- ios - 如何加载文本文件的内容并将其显示在 SwiftUI 文本视图中?
- r - 如何使用 tsibble 对象生成时间序列图?
- java - 为 Java 中的自定义异常抛出定义的消息
- c - 为什么使用信号处理程序在此代码中出现分段错误?
- java - 找到最大乘积的算法 - 分析
- c# - 在Unity2d中将rigidbody.velocity设置为鼠标的方向
- javascript - 函数可以在没有花括号的情况下工作,并且不能与它们一起工作,为什么?
- eclipse - HikariCP/Spigot:使用 Eclipse 无 maven 导出
- optimization - 使用soplex命令行输出解决方案
- javascript - Jest - 如何将其他文件中的变量/函数用于测试单元?