【问题标题】:Error in query (1248): Every derived table must have its own alias INNER JOIN查询错误 (1248):每个派生表都必须有自己的别名 INNER JOIN
【发布时间】:2016-08-01 09:45:58
【问题描述】:

我想在 2 个表上使用 INNER JOIN,但是当我尝试以下任一语句时,我得到了

查询错误 (1248):每个派生表都必须有自己的别名

SELECT DISTINCT(t2.col)
FROM tab2 as t2
INNER JOIN (
  SELECT DISTINCT(t1.col)
  FROM tab1 as t1
  WHERE t1.id>678 AND t1.id<5248
) ON t2.col=t1.col
WHERE t2.id>10 AND t2.id<3770

SELECT DISTINCT(col)
FROM tab2 as t2
INNER JOIN (
  SELECT DISTINCT(col)
  FROM tab1 as t1
  WHERE t1.id>678 AND t1.id<5248
) ON t2.col=t1.col
WHERE t2.id>10 AND t2.id<3770

有什么问题?

【问题讨论】:

  • 需要这个(SELECT DISTINCT(t1.col) FROM tab1 as t1 WHERE t1.id&gt;678 AND t1.id&lt;5248) 的别名
  • 请注意,DISTINCT 不是函数。

标签: mysql inner-join alias


【解决方案1】:

您需要为连接表添加别名:

SELECT DISTINCT(t2.col) FROM tab2 as t2 INNER JOIN (SELECT DISTINCT(t1.col) FROM tab1 as t1 WHERE t1.id>678 AND t1.id<5248) as t3 ON t2.col=t3.col WHERE t2.id>10 AND t2.id<3770

【讨论】:

  • 谢谢!而且似乎内部不需要额外的别名,因为它已经别名 SELECT DISTINCT(t2.col) FROM tab2 as t2 INNER JOIN (SELECT DISTINCT(col) FROM tab1 WHERE id>678 AND id10 AND t2.id
  • 是的,DISTINCT 仍然不是一个函数。
  • ...和ain't 不是一个词:-)
【解决方案2】:

您需要为连接提供别名:

SELECT DISTINCT(t2.col) 
FROM tab2 as t2 
INNER JOIN (
   SELECT DISTINCT(t1.col) 
   FROM tab1 as t1 
   WHERE t1.id>678 AND t1.id<5248
) as myJoinName ON t2.col=myJoinName.col 
WHERE t2.id>10 AND t2.id<3770

重复第二个查询。您还需要更改连接方式以使用此别名,因为 t1 将超出连接条件的范围。

【讨论】:

    【解决方案3】:

    查询错误 (1248):每个派生表都必须有自己的别名

    这个错误是不言自明的,是由您的子查询没有分配别名引起的。事实上,每个派生表都需要一个别名,即使您不使用它。尝试以下查询:

    SELECT DISTINCT t2.col
    FROM tab2 as t2
    INNER JOIN
    (
        SELECT DISTINCT t.col
        FROM tab1 t
        WHERE t.id > 678 AND t.id < 5248
    ) t1
        ON t2.col = t1.col
    WHERE t2.id > 10 AND t2.id < 3770
    
    SELECT DISTINCT col 
    FROM tab2 as t2
    INNER JOIN
    (
        SELECT DISTINCT col 
        FROM tab1 as t
        WHERE t.id > 678 AND t.id < 5248
    ) t1
        ON t2.col = t1.col
    WHERE t2.id > 10 AND t2.id < 3770
    

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多