MySQL不是唯一的表/别名

时间:2011-08-18 01:46:23

标签: mysql table-alias

我查看了其他人遇到同样问题的答案,但我无法弄清楚如何修复“不唯一的表/别名”。

SELECT m.*, u.*
  FROM ".TABLE_PREFIX."users_medals u
  LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id
  WHERE u.user_id IN (".$post['uid'].")
  AND m.medal_level = (
    SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."medals
    LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id
    WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id
    AND ".TABLE_PREFIX."medals.medal_type = m.medal_type
  )

TABLE_PREFIX是我的脚本用来定义数据库表前缀的。

2 个答案:

答案 0 :(得分:1)

在您的子查询中

  

LEFT JOIN“.TABLE_PREFIX。”奖牌

我认为那应该是

LEFT JOIN ".TABLE_PREFIX."users_medals

答案 1 :(得分:0)

在子查询中,您有两个没有别名的medals表。我认为FROM ".TABLE_PREFIX."medals应为FROM ".TABLE_PREFIX."users_medals

SELECT m.*, u.*
  FROM ".TABLE_PREFIX."users_medals u
  LEFT JOIN ".TABLE_PREFIX."medals m ON u.medal_id = m.medal_id
  WHERE u.user_id IN (".$post['uid'].")
  AND m.medal_level = (
    SELECT MAX(".TABLE_PREFIX."medals.medal_level) FROM ".TABLE_PREFIX."users_medals
    LEFT JOIN ".TABLE_PREFIX."medals ON ".TABLE_PREFIX."users_medals.medal_id = ".TABLE_PREFIX."medals.medal_id
    WHERE ".TABLE_PREFIX."users_medals.user_id = u.user_id
    AND ".TABLE_PREFIX."medals.medal_type = m.medal_type
  )