【发布时间】:2020-08-17 19:51:03
【问题描述】:
我想这对我来说是一个非常基本的疏忽,但我有一个运行良好的 SQL 查询。但是当我从该结果中选择时,我(SELECT FROM (SELECT))
我收到“重复列”错误。当然,在我比较它们的两个表中存在重复的列名,但它们不会导致初始结果出现问题。例如:
SELECT _dia_tagsrel.tag_id,_dia_tagsrel.article_id, _dia_tags.tag_id, _dia_tags.tag
FROM _dia_tagsrel
JOIN _dia_tags
ON _dia_tagsrel.tag_id = _dia_tags.tag_id
工作正常,但当我尝试从中选择时,我收到错误:
SELECT DISTINCT tag FROM
(SELECT _dia_tagsrel.tag_id,_dia_tagsrel.article_id, _dia_tags.tag_id, _dia_tags.tag
FROM _dia_tagsrel
JOIN _dia_tags
ON _dia_tagsrel.tag_id = _dia_tags.tag_id) a
无论 DISTINCT 是什么。好的,我可以将列名更改为唯一,但问题确实是 - 为什么我在 SELECT FROM (SELECT) 而不是在初始查询中出现错误? 谢谢
解决办法:
SELECT DISTINCT tag_id, tag FROM (SELECT _dia_tagsrel.tag_id, _dia_tagsrel.article_id, _dia_tags.tag
FROM _dia_tagsrel
JOIN _dia_tags
ON _dia_tagsrel.tag_id = _dia_tags.tag_id) a
我只需要选择一个重复的列,即使我正在比较它们。由下面的答案提供。
【问题讨论】:
-
我只能认为我需要在初始查询中对重复的列名进行别名?
-
在后一种情况下,您创建派生表,它遵循表语义。列名必须是唯一的。
标签: sql select nested derived-table