我想知道这在SQL中是否可行.假设有两个表A和B,在表A上进行 Select ,在表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"、"name"、"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 *
.