MySql 查询错误

问题描述 投票:0回答:3

我有三张桌子。如果存在一组情况,我试图从两个表中提取数据并插入到第三个表中。当我运行查询时,我得到

“#1054 - ‘where 子句’中存在未知列‘rvp_to_registrants_to_events.rvp_to_registrants_id’”

这是我的询问:

INSERT INTO  rvp_to_registrants_to_events (rtr.rvp_to_registrants_id, rte.events_id)



SELECT
    rtr.rvp_to_registrants_id, rte.events_id

FROM
    registrants_to_events rte,rvp_to_registrants rtr


WHERE (
    SELECT
        rte.registrants_id, rte.events_id, 
        rtr.rvp_to_registrants_id, rtr.registrants_id


    FROM
        registrants_to_events rte,rvp_to_registrants rtr


    WHERE
        rte.registrants_id = rtr.registrants_id

        AND (rtr.rvp_to_registrants_id != rvp_to_registrants_to_events.rvp_to_registrants_id

        AND rte.events_id != rvp_to_registrants_to_events.events_id)

    )

我不明白为什么会出现此错误。我确信这是我忽略的一些愚蠢的事情,但感谢任何帮助。

谢谢!

根据迈克尔的输入,我已更新我的代码如下。现在返回零结果,所以正在努力:

   INSERT INTO  rvp_to_registrants_to_events (rvp_to_registrants_id, events_id)

SELECT
    rtr.rvp_to_registrants_id, rte.events_id

FROM
  registrants_to_events rte 
  JOIN rvp_to_registrants rtr ON rte.registrants_id = rtr.registrants_id
  JOIN rvp_to_registrants_to_events rtrte ON rtr.rvp_to_registrants_id = rtrte.rvp_to_registrants_id

    WHERE  

        rte.registrants_id = rtr.registrants_id
    AND 
        (rtr.rvp_to_registrants_id !=  rtrte.rvp_to_registrants_id
    AND 
        rte.events_id != rtrte.events_id)
mysql syntax-error
3个回答
1
投票

该错误看起来是因为您在

rvp_to_registrants_to_events
子句中引用了
WHERE
,但未将其包含在
FROM
中:

FROM
    registrants_to_events rte,rvp_to_registrants rtr, rvp_to_registrants_to_events
WHERE
    rte.registrants_id = rtr.registrants_id
    AND (rtr.rvp_to_registrants_id != rvp_to_registrants_to_events.rvp_to_registrants_id
    AND rte.events_id != rvp_to_registrants_to_events.events_id)

我建议使用正确的

JOIN
语法重新定义它:

FROM
  registrants_to_events rte 
  JOIN rvp_to_registrants rtr ON rte.registrants_id = rtr.registrants_id
  JOIN rvp_to_registrants_to_events ON rtr.registrants_id = rvp_to_registrants_to_events.registrants_id
  -- --------------------supply the correct ON clause relationship ^^^^^^^^^^^^^^^^^^^
WHERE
  -- actual selection criteria

您需要向

ON
子句提供实际的列关系来代替
ON rtr.registrants_id = rvp_to_registrants_to_events.registrants_id
JOIN
假设
rvp_to_registrants_to_events
rte
rtr
之间有一个公共列,但我不清楚。


0
投票

在你的from中因为你有: 注册者_至_事件 rte、rvp_至_注册者 rtr

在您的where导致您使用该表: rvp_to_registrants_to_events

这张表应该在您的from事业中


0
投票

首先,学习在代码中使用“JOIN”语句和表别名。它不仅使其更易于使用,而且易于理解。本质上,你的 sql 无论如何都会这样做,但有它自己的解释。

© www.soinside.com 2019 - 2024. All rights reserved.