Select

在 SELECT 查詢中省略表名和點

  • July 9, 2021

當我執行此查詢時:

SELECT `tablename`.* FROM `something`.`tablename`

我得到一個包含點的列名的表:

tablename.c1 | tablename.c2 | tablename.c3
------------------------------------------
    a       |       1      |     2
    b       |       1      |     3

我不想要這個,我只想要列名c1c2並且c3,我可以通過編寫以下查詢來解決這個問題:

SELECT `tablename`.`c1` as `c1`,
      `tablename`.`c2` as `c2`,
      `tablename`.`c3` as `c3` FROM `something`.`tablename`

然而,我有很多列,這使它成為一個很長的查詢。如何重命名第一個查詢中的列,或者如何從一開始就正確命名?

(ps我正在使用的查詢包含多個表引用,這就是我指定表名的原因tablename.*

為什麼不簡單:

select 
 c1 
, c2 
, c3 
from tablename ; 

只涉及一個表,不需要告訴數據庫應該從哪個表中獲取欄位。如果您要連接兩個都包含id列的表,那麼您必須(通過查詢)告訴數據庫您想要返回哪個:

select 
 table1.id
, table1.field1 
, table2.field2 
from table1 
inner join table2 
on ... 
where ... 

但即使這樣也很麻煩。輸入“相關名稱” - 每個查詢的簡寫名稱,表示哪個表是哪個:

select 
 a.id
, a.field1 
, b.field2 
from table1 a 
inner join table2 b 
on ... 
where ... 

不要擔心冗長的欄位名稱或在查詢中列出大量欄位 - 這正是您應該做的 -有意義的欄位名稱,並且檢索您在每個查詢中需要的欄位。

切勿在生產程式碼中使用“select *”。

您必須按照您在問題中提出的方式進行操作。

在多列的情況下,您可以獲得為您生成的程式碼。我發現 Excel 中的字元串操作對於生成 SQL 程式碼非常有用。

引用自:https://dba.stackexchange.com/questions/257552