子查询命令不同步

Subquery commands out of sync

我在 PHPMyAdmin 上 运行 一些 SQL。

我的 table 有以下字段:

address
firstname
joindate
memid
recommendedby
surname
telephone
zipcode

recommendedby 字段包含成员 ID。我想按姓名 select 成员,并按姓名列出推荐他们的人。我尝试使用子查询和自连接来做到这一点:

SELECT CONCAT(surname, ", ", firstname),
(SELECT CONCAT(m1.firstname, " ", m1.surname)
    FROM Members as m1
    INNER JOIN Members as m2
    ON m1.memid = m2.recommendedby) AS recommendedby
FROM Members
ORDER BY surname, firstname

这会引发错误 #2014 - Commands out of sync; you can't run this command now。子查询自己干净地运行。有谁知道是什么导致了这里的错误?

如果没有 join:

,您的查询会很好
SELECT CONCAT(m.surname, ', ', m.firstname),
      (SELECT CONCAT(m1.firstname, ' ', m1.surname)
       FROM Members m1
       WHERE m1.memid = m.recommendedby
      ) AS recommendedby
FROM Members m;

您也可以在外部查询中使用 LEFT JOIN 来执行此操作。但子查询中不需要 JOIN -- 只有一个相关子句。

我为你的问题创建了一个例子:

CREATE TABLE #Members  (
  [address] VARCHAR(100),
firstname VARCHAR(100),
joindate VARCHAR(100),
memid int,
recommendedby int,
surname VARCHAR(100),
telephone VARCHAR(100),
zipcode VARCHAR(100),
);

INSERT INTO #Members
  ([address], firstname,surname,joindate,memid,recommendedby,telephone,zipcode)
VALUES
  ('adress1','Jack','Ady','2020-01-01',1,null,'0123455','104555'),
  ('adress2','Harry','Adwell','2020-01-02',2,3,'0123445455','1075'),
  ('adress3','John','Age','2020-01-03',3,4,'0124543455','1450855'),
  ('adress4','Robert','Ainslie','2020-01-04',4,1,'0124543455','10545055'),
  ('adress5','Yehuda','Aarons','2020-01-05',5,4,'0124543455','105595'),
  ('adress6','Michael','Altis','2020-01-01',6,1,'0124543455','1012')
  ;
  

  select CONCAT(m1.firstname, '-', m1.surname) MemberName,
  CONCAT(m2.firstname, '-', m2.surname)recommendedMember
  from #Members m1 
  left join #Members m2 on m1.memid = m2.recommendedby

结果=

MemberName         recommendedMember
Jack-Ady           Robert-Ainslie
Jack-Ady           Michael-Altis
Harry-Adwell       -
John-Age           Harry-Adwell
Robert-Ainslie     John-Age
Robert-Ainslie     Yehuda-Aarons
Yehuda-Aarons      -
Michael-Altis      -