回答
我會用 「emptyTable」 和 「populatedTable」,因爲問題是混亂
重要沒有ORDER BY的TOP
會給出500個任意行。從未有一個隱含的或自然順序表
INSERT INTO emptyTable
SELECT TOP 500 *
FROM populatedTable
ORDER BY What -- need this to define TOP 500
缺乏此列列表通常被定義爲壞的做法,但只能當
- 表是相同
- 沒有在emptyTable IDENTITY列
編輯:
ORDER BY是要求以保證行順序。看到這些。這也是在ANSI標準
+1 ORDER BY的優點 - 沒有ORDER BY的TOP(x)'只給出隨機行。 – 2011-12-29 13:39:14
據我所知,如果沒有連接,查詢優化器將按照物理順序(即聚集索引的順序,如果存在的話) – 2011-12-29 13:45:04
@RowlandShaw:有這樣的巧合,但不要依賴它 – gbn 2011-12-29 13:46:07
事情是這樣的:
INSERT INTO t1
SELECT TOP 500 * FROM t2
您選擇的500強,並插入。
其實,@marc_s,他說t1是空的,所以我假設他希望他們去那裏。另外:是的,我忘了'*' – 2011-12-29 13:37:17
@marc_s不太確定,因爲他們還說t1沒有行(所以沒有第一個500) – 2011-12-29 13:37:33
insert t2(fieldslist)
select top 500 fieldslist from t1
如果兩個表具有相同的架構,它是那樣簡單:
INSERT INTO t1
SELECT TOP 500 *
FROM t2
@marc_s據我所知,沒有連接,查詢優化器將與物理順序一致(即聚集索引的順序,如果存在的話) – 2011-12-29 13:43:51
否 - 那個*可能是現在和現在的情況 - 但是沒有ORDER BY,**沒有**保證關於什麼順序將被使用 - 它不是確定性的 - 在SQL Server中沒有自然的ORDER ** – 2011-12-29 13:50:06
- 1. 從table1中選擇數據並將其複製到table2中
- 2. 如何從table1向table2插入數據?
- 3. 從table1連接table2中選擇id,table1.column1 + table2.column2作爲總數。如果table2.column2沒有價值呢?
- 4. MySQL:如果table1中的行存在,則在table2上插入行
- 5. php從table1中選擇項目查詢,複製到table2
- 6. 從table1中選擇*,其中JID不在table2中,而table2.uid也不是11111
- 7. 如何加入table2如果table1中的table2 id不爲null
- 8. 如何從table1中選擇table2中具有table3選項的記錄?
- 9. MySQL在插入table1時自動向table2插入一行
- 10. 從table1中選擇3個值並使用table2中table1中的一個值來獲取結果?
- 11. 從table1中選擇哪裏類似的行不會出現在table2中?
- 12. 如何從table1中選擇記錄,其中table1.id存在於table2的id列中?
- 13. 從db1.table1插入新行到db2.table1中
- 14. 將Table1與table2相關聯,並在table1上顯示來自table2的字段
- 15. 插入表中從table2中選擇變量相當於mongodb
- 16. 如何在TABLE2中定義某些靜態行時,將table1中的多個列複製到table2中?
- 17. 從table2更新table1與top1行
- 18. 如何從2列表中選擇隨機行並將它們合併
- 19. 從msql中選擇並插入到mysql
- 20. 從Table1中選擇,表2
- 21. Mysql/PHP在一個查詢中選擇存在於Table1或Table2中的行
- 22. 如何在mysq中從table1中減去table2?
- 23. 從Table1中獲取表中缺少table2 oracle的行嗎?
- 24. 我想從表中選擇300行,並再次將它們插入到同一表
- 25. 如何從DataGrid拖放行並將它們放入Excel中?
- 26. 如何從數據庫中提取記錄,調整它們並將它們插入到不同的列中?
- 27. MySQL - 做'SELECT table1。*,table2.column FROM table1,table2'是否合法?
- 28. 是否table1 UNION ALL table2保證輸出順序table1,table2?
- 29. 如何在觸發器中選擇它們後在MySQL中插入多行
- 30. Mysql的從表中的多個ID中選擇並將它們插入到另一個表
爲什麼你想從一個完全空表中選擇TOP 500行???你說* t1是完全空白的*然後*我如何從t1中選擇500行* * - 根本沒有任何意義...... – 2011-12-29 13:37:44
感謝您發現它;我已經修復了問題文本 – pencilCake 2011-12-29 13:41:43
另外:正如gbn正確地指出:如果沒有'ORDER BY',你的'TOP 500'會給你一個任意的500行......所以你想要'TOP 500' **標準?? – 2011-12-29 13:42:09