gpt4 book ai didi

sql - 在 SELECT * 中仅使用一次连接列

转载 作者:行者123 更新时间:2023-12-02 20:36:26 25 4
gpt4 key购买 nike

假设:

WITH t12 AS (SELECT * FROM t1 INNER JOIN t2 ON (t1.id = t2.id))
SELECT * FROM t12

这将失败:

The column 'id' was specified multiple times for 't12'.

现在这是一个大型查询,如 t1t2有许多(+200)列。我不会全部列出:我明确想使用 * .

通常我会用 USING (id) 来解决这个问题子句,但 SQL Server 似乎不支持该子句。有什么想法吗?

其他选项是在没有 WITH 的情况下工作子句——这有效,但使代码可读性较差。

SO 上有很多答案,可以让您列出所有字段。这是一个明确的问题,需要在没有WITH子句和纯SQL的情况下执行此操作。相关问题如“排除字段”herehere和一个for views要求非 ANSI SQL 功能。这个问题是针对纯SQL的,并且如果SQL Server支持ANSI SQL-92的话,这是可能的(据我所知)。语法。

最佳答案

问题不在 ON 子句中。它位于SELECT 中。使用* 选择t1.idt2.id。这两个具有相同的名称,因此您会收到错误。

我能看到的唯一解决方法是将 * 应用于具有最大列数的表,并明确命名您要选择的另一个表的列:

WITH t12 AS (
SELECT t1.*, t2.myColumn, etc...
FROM t1
INNER JOIN t2 ON (t1.id = t2.id)
)
SELECT * FROM t12

关于sql - 在 SELECT * 中仅使用一次连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49666736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com