【问题标题】:1066, "Not unique table/alias - mysql query1066, "不是唯一的表/别名 - mysql 查询
【发布时间】:2013-05-14 20:47:26
【问题描述】:

我有以下问题

'''SELECT %(t1)s.*, %(t2)s.id, %(t2)s.street 
   FROM %(t1)s, %(t2)s 
   LEFT OUTER JOIN %(t2)s 
   ON %(t2)s.id = %(t1)s.location_id 
''' % { 't1' : 'table1', 't2' : 'table2' }

我曾尝试使用LEFT OUTER JOIN %(t2)s t2alias ON t2alias.id = ...,但无济于事。相反,我得到了1054, "Unknown column。我错过了什么?

谢谢

【问题讨论】:

  • 嗯,如果我查看您的查询,我认为JOIN-ing table2 两次没有意义?
  • 什么是%(t1)s?为什么你不能只做table1.* 或给FROM table1 alias1, table2 alias1 之类的别名?

标签: python mysql join


【解决方案1】:

我想我看到了你的问题:

SELECT %(t1)s.*, %(t2)s.id, %(t2)s.street
FROM %(t1)s, %(t2)s 
             ^^^^^^ Already declared in the LEFT OUTER JOIN
LEFT OUTER JOIN %(t2)s
ON %(t2)s.id = %(t1)s.location_id

尝试从FROM 行中删除, %(t2)s;将其放在LEFT OUTER JOIN 中就足够了。

【讨论】:

    【解决方案2】:

    你有table2 LEFT OUTER JOIN table2。我想你只是想这样做:

    FROM %(t1)s,
    LEFT OUTER JOIN %(t2)s
    

    我还认为不在查询中指定表名是一种奇怪的做法。如果他们经常更换,那对我来说很奇怪。

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多