gpt4 book ai didi

SQL选择连接: is it possible to prefix all columns as 'prefix.*' ?

转载 作者:行者123 更新时间:2023-12-03 04:11:49 25 4
gpt4 key购买 nike

我想知道这在 SQL 中是否可行。假设您有两个表 A 和 B,并且您对表 A 进行选择并在表 B 上进行联接:

SELECT a.*, b.* FROM TABLE_A a JOIN TABLE_B b USING (some_id);

如果表 A 具有列 'a_id'、'name' 和 'some_id',表 B 具有列 'b_id'、'name' 和 'some_id',则查询将返回列 'a_id'、'name' 、“some_id”、“b_id”、“名称”、“some_id”。有没有办法为表 B 的列名添加前缀,而无需单独列出每一列?相当于这个:

SELECT a.*, b.b_id as 'b.b_id', b.name as 'b.name', b.some_id as 'b.some_id'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

但是,正如前面提到的,没有列出每一列,所以类似于:

SELECT a.*, b.* as 'b.*'
FROM TABLE_A a JOIN TABLE_B b USING (some_id);

基本上就是说,“在 b.* 返回的每一列前面加上 'something' 前缀”。这是可能的还是我运气不好?

编辑

关于不使用 SELECT * 等的建议是有效的建议,但与我的上下文无关,因此请坚持解决手头的问题 - 是否可以添加前缀(指定的常量)在 SQL 查询中)到连接中表的所有列名?

我的最终目标是能够通过连接对两个表执行SELECT *,并能够从结果集中获得的列的名称中判断出哪些列来自表 A 以及哪些列来自表 B。同样,我不想单独列出列,我需要能够执行 SELECT *

最佳答案

您的问题的答案似乎是否定的,但是您可以使用的一种技巧是分配一个虚拟列来分隔每个新表。如果您使用 Python 或 PHP 等脚本语言循环遍历列列表的结果集,这种方法尤其有效。

SELECT '' as table1_dummy, table1.*, '' as table2_dummy, table2.*, '' as table3_dummy, table3.* FROM table1
JOIN table2 ON table2.table1id = table1.id
JOIN table3 ON table3.table1id = table1.id

我意识到这并不能准确回答您的问题,但如果您是一名编码员,这是分隔具有重复列名的表的好方法。

关于SQL选择连接: is it possible to prefix all columns as 'prefix.*' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/329931/

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