【问题标题】:Using a stored procedure, get the error: ERROR 1066: Not unique table/alias: 'users'使用存储过程,得到错误:ERROR 1066: Not unique table/alias: 'users'
【发布时间】:2013-10-28 18:51:54
【问题描述】:

我是 SQL 的新手,我目前在新学徒期间经常使用它,并且我正在尝试在家里更好地掌握它。目前我有一个简单的 PHP 脚本,用于创建数据库用户,现在想根据用户 ID 从多个表中提取数据,但出现此错误;

ERROR 1066: Not unique table/alias: 'users'

SQL Statement:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_userinfo`(IN uName VARCHAR(255))

BEGIN

SELECT id,password,salt,email FROM controlpanel.users

LEFT JOIN controlpanel.users ON users.id=servers.ServerID



WHERE username = uName;

END

我目前正在使用 MySQL。 我正在尝试从表 'servers' 中获取列 ServerID、Port、IP、NodeID,其中 'users' 表中的列 'OwnerID' = 'id'。

【问题讨论】:

  • LEFT JOIN 的两边都在controlpanel.users 上。看起来你的意思是两者之一是servers
  • 您将加入 usersusers 而不给它一个别名。但是,您的意思似乎是servers
  • 对,我明白了,所以应该是 LEFT JOIN controlpanel.servers ON users.id=servers.ServerID ?
  • @JamesTrotter server.ServierID 似乎不太可能对应于 users.id 列。为什么还要加入到服务器表上?
  • 你是正确的,users.id 应该链接到 server.OwnerID,你是正确的我应该加入他们。不久后我发布了这个,并用一个新的存储过程替换了它,以获取所有具有提供的用户 ID 的服务器。

标签: php mysql sql procedure


【解决方案1】:

我使用了不正确的方法来实现我想要实现的目标,并且我目前认为我应该从用户表中获取“id”字段,然后使用它运行另一个存储过程来查找用户所在的所有行。 id = servers.OwnerID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2018-05-18
    • 1970-01-01
    • 2014-12-17
    • 2019-11-05
    • 2014-03-07
    相关资源
    最近更新 更多