Select
在 SELECT 查詢中省略表名和點
當我執行此查詢時:
SELECT `tablename`.* FROM `something`.`tablename`
我得到一個包含點的列名的表:
tablename.c1 | tablename.c2 | tablename.c3 ------------------------------------------ a | 1 | 2 b | 1 | 3
我不想要這個,我只想要列名
c1
,c2
並且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 程式碼非常有用。