如何把柱當使用之前其他列SQL
Select * FRom table;
我有列A,B,C 但我想有視圖的A,C,B 除Select * from table where a,c,b
;
有沒有其他如何使這發生?
如何把柱當使用之前其他列SQL
Select * FRom table;
我有列A,B,C 但我想有視圖的A,C,B 除Select * from table where a,c,b
;
有沒有其他如何使這發生?
select a, c, b from table
*
表示您希望獲取所有字段的默認順序。
Select a, c, b
From mytable
這是你唯一的選擇,在我看來,你應該通過名稱,而不是總是選擇列*,這樣你就不會得到任何驚喜,當模式變化(新列添加例如)
但如果我有56列?我只需要列51之前的列號52 * - 如何做到這一點? :D – 2012-02-17 12:45:01
同意@Bassam Mehanni,如果可以的話,通常最好避免在生產SQL中使用*。如果有人更改模式,它會讓你更安全 – Liath 2012-02-17 12:50:44
你仍然必須按名稱選擇它們:) – 2012-02-17 12:51:26
創建表後,您無法重新排列表中的列 - 只能追加到最後。如上所述,您可以選擇查詢中的順序。
您唯一的選擇是腳本表,刪除表並手動更新腳本中的順序。你顯然會面臨失去數據和FKs這樣做的問題。
我不完全理解你的問題。如果你是說
SELECT *
FROM MyView
EXCEPT
SELECT *
FROM MyTable;
失敗,因爲視圖和表具有不同的列排序,然後使用
SELECT *
FROM MyView
EXCEPT CORRESPONDING
SELECT *
FROM MyTable;
,除非你選擇的SQL產品不支持在這種情況下,你要麼有將所有列寫出(推薦)或將列的序數位置更改爲其中一個表(不推薦)。
您可以創建該表格的視圖,將列按所需順序排列。例如:
CREATE VIEW viewMyView
as
SELECT
Column5,
Column1,
Column2,
Column3,
Column6,
Column7,
Column8,
Column4
FROM myTable
然後你可以從viewMyView
做選擇*
確定我做出這樣您鍵入*,但我喜歡複製56列,那麼有沒有其他辦法? :D – 2012-02-17 12:50:33
你需要什麼56列?要在屏幕上看到這些內容,或者以編程方式在其他地方使用這些內容?在後一種情況下,您應該按列名引用這些字段,而不要依賴它們的位置。 – penartur 2012-02-17 12:52:53
ok rl true是我需要一個更好的性生活的列:D – 2012-02-17 13:02:05