【问题标题】:How can I do this subquery?我该怎么做这个子查询?
【发布时间】:2017-07-19 20:12:23
【问题描述】:

我一直在尝试做一个子查询,在其中获取用户发送的所有消息以及这些消息的所有收件人。但到目前为止我唯一能得到的就是一个错误。

这是我的查询:

SELECT
   UR.NAME,
   UR.SURNAME,
   UR.EMAIL,
   UR.PASSWORD,
   UR.ADRESS,
   UR.CELLPHONE,
   UR.COUNTRY,
   UR.STATE,
   UR.CITY
FROM USERS AS UR
JOIN RECIPIENTBYMESSAGE AS RBM ON RBM.IDRECIPIENT = USERS.IDUSER
WHERE M.IDMESSAGE IN
    ( SELECT M.IDMESSAGE,
             M.BODY,
             M.SUBJECT,
             US.NAME,
             US.SURNAME,
             US.EMAIL,
             US.PASSWORD,
             US.ADRESS,
             US.CELLPHONE,
             US.COUNTRY,
             US.STATE,
             US.CITY
     FROM MESSAGES AS M
     JOIN USERS AS US ON US.IDUSER=M.IDSENDER
     WHERE M.IDSENDER=1 );

问题出在

M.IDMESSAGE 在哪里

因为 M.IDMESSAGE 是子查询的一部分,我从外部调用它 但我不知道该怎么办。

如果有人有任何想法,或者任何其他不一定使用子查询的方式,我将非常感激。

Here are my tables

【问题讨论】:

  • 如果您对其他 11 列不感兴趣,请不要选择它们

标签: mysql join subquery


【解决方案1】:

M.IDMESSAGE IN 

不在您的选择表中。您可以在您的选择中放置您希望它匹配的列之一

M.IDMESSAGE 

来自你的

inner select.

【讨论】:

  • 我这样做了:WHERE RBM.IDMESSAGE IN ... 它说操作数应该包含一列..
  • 当使用内部选择时,您的内部查询在您的内部选择中不应超过一列。该列应该是您希望它与 where 子句中的列匹配的列。
猜你喜欢
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 1970-01-01
相关资源
最近更新 更多