sql 连接来自相同 table 的值

sql join values from same table

我是通过访问this question.

得出的

所以我做了这样的查询

SELECT ru.iUserId,ru.iRefUserId,CONCAT(ru.vName,ru.vLastName) AS userName,CONCAT(iru.vName,iru.vLastName) AS RefUserName
FROM `register_user` ru
 INNER JOIN `register_user` iru
 ON ru.iRefUserId = iru.iRefUserId
WHERE ru.iRefUserId > 0

数据库是这样的 所以基本上我的需要是我需要一个 refUserId 用户全名当我查询时

SELECT * FROM TABLE WHERE iRefUserId > 0

以上查询结果输出我与用户名相同的名字

需要更改加入密钥

SELECT ru.iUserId,ru.iRefUserId,
CONCAT(ru.vName,ru.vLastName) AS userName,
CONCAT(iru.vName,iru.vLastName) AS RefUserName
FROM `register_user` ru
  JOIN `register_user` iru
 ON ru.iuserid = iru.iRefUserId
WHERE ru.iRefUserId > 0

注意我已经给出了 WHERE ru.iRefUserId > 0 这个条件,因为你在你的答案中给出了这就是为什么但是如果你把这个然后你第一个将总是被忽略

您可能正在寻找外部联接:显示所有用户及其参考用户(如果存在)。

SELECT
  ru.iuserid,
  ru.irefuserid,
  CONCAT(ru.vname, ru.vlastname) AS username,
  CONCAT(iru.vname, iru.vlastname) AS refusername
FROM register_user ru
LEFT OUTER JOIN register_user iru ON iru.iuserid = ru.irefuserid
ORDER BY ru.iuserid;

我已经更正了错误的连接条件(错误的 ID)。此外,由于不存在用户 ID 为 0 的用户,我猜你只是想避免查找该 ID,因此我放弃了条件 ru.iRefUserId > 0。不需要,因为外连接已经处理了。