查询错误 (1248):每个派生 table 必须有自己的别名 INNER JOIN
Error in query (1248): Every derived table must have its own alias INNER JOIN
我想在 2 个表上使用 INNER JOIN,但是当我尝试以下任一语句时,我得到
Error in query (1248): Every derived table must have its own alias
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(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 将超出加入条件的范围。
您需要为您的加入添加一个别名table:
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
Error in query (1248): Every derived table must have its own alias
这个错误是不言自明的,是由于您的子查询没有分配别名引起的。事实上,每个派生的 table 都需要一个别名,即使您不使用它也是如此。尝试以下查询:
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
我想在 2 个表上使用 INNER JOIN,但是当我尝试以下任一语句时,我得到
Error in query (1248): Every derived table must have its own alias
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(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 将超出加入条件的范围。
您需要为您的加入添加一个别名table:
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
Error in query (1248): Every derived table must have its own alias
这个错误是不言自明的,是由于您的子查询没有分配别名引起的。事实上,每个派生的 table 都需要一个别名,即使您不使用它也是如此。尝试以下查询:
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