我有一個表的「產品」有N個記錄(超過5000個,並隨時更改號碼)拆表的記錄。我如何根據表生成兩個查詢,一個用於上半部分記錄,另一個用於另一半?訪問 - 我怎樣才能在兩個查詢
回答
使用(有沒有遺漏的數字順序編號,或至少一個字段),這可能工作的自動編號主鍵 - 雖然我還沒有真正想通了,可能是幾個陷阱?
返回ID號的前半部分:
SELECT ID
FROM Table1
WHERE ID<=INT((SELECT MAX(ID) FROM Table1)/2)
返回ID號碼下半年:
SELECT ID
FROM Table1
WHERE ID>INT((SELECT MAX(ID) FROM Table1)/2)
它確實可以工作,但很少有自動編號ID不會丟失。這是純SQL中唯一可行的方法,但不可靠 –
同意,絕對不可靠。 –
@Darren Bartup庫克 非常感謝達倫但我不能使用id-自動編號,這是因爲在查詢中我用另一種標準的「類別」。 表結構如下: ID -Auto 類別編號 產品-Txt Price-Curr。 當輸入數據被隨機插入 標識產品\t類別\t價格 1. 1. \t \t蘋果\t \t $ 1.00包裝 2. 2. \t \t兔\t \t $ 4.00 3. 3. \t \t奶酪\t \t $ 8.00 4. 2. \t \t \t雞3.10 $ 5. 1. \t \t \t櫻桃\t $ 2.50 如果我選擇類別 「1」 的結果: 標識產品\t類別\t價格 1. 1. \t \t蘋果\t \t $ 1.00包裝 5. 1. \t \t櫻桃\t \t $ 2.00 我有兩個REC但最大Id是5 .. – KEOC
的問題是,你不能指定一個COUNT(*)
的結果子查詢在TOP指令,所以不可能在純SQL
可靠的方法是用VBA預先建立你2個查詢:
Sub Half_Table()
Dim lngTotal As Long
Dim lngHalf1 As Long
Dim lngHalf2 As Long
Dim strTable As String
Dim strIDfield As String
Dim strSQL1 As String
Dim strSQL2 As String
strTable = "table_Name"
strIDfield = "ID"
lngTotal = DCount("*", strTable)
lngHalf1 = Round(lngTotal/2)
lngHalf2 = lngTotal - lngHalf1
strSQL1 = "SELECT TOP " & lngHalf1 & " * FROM " & strTable & " ORDER BY " & strIDfield & " ASC"
strSQL2 = "SELECT TOP " & lngHalf2 & " * FROM " & strTable & " ORDER BY " & strIDfield & " DESC"
Debug.Print strSQL1
Debug.Print strSQL2
End Sub
變化strTable
和strIDfield
名稱相應。
這會生成以下2個查詢含1399條記錄的表:
SELECT TOP 700 * FROM table_Name ORDER BY ID ASC
SELECT TOP 699 * FROM table_Name ORDER BY ID DESC
我還沒展示瞭如何使用生成的SQL查詢 後來我想你知道,
非常感謝托馬斯G – KEOC
考慮純
上半
:使用的行數數合計子查詢的SQL解決方案SELECT [ID], [Category], [Product], [Price]
FROM Products
INNER JOIN
(SELECT [ID],
(SELECT Count(*) FROM Products t2
WHERE Products.[ID] <= t2.[ID]) AS ProductOrder,
(SELECT Count(*) FROM Products t2) AS ProductCount
FROM Products) AS sub
ON Products.[ID] = sub.[ID]
WHERE sub.ProductOrder >= sub.ProductCount/2
下半部
SELECT [ID], [Category], [Product], [Price]
FROM Products
INNER JOIN
(SELECT [ID],
(SELECT Count(*) FROM Products t2
WHERE Products.[ID] <= t2.[ID]) AS ProductOrder,
(SELECT Count(*) FROM Products t2) AS ProductCount
FROM Products) AS sub
ON Products.[ID] = sub.[ID]
WHERE sub.ProductOrder <= sub.ProductCount/2
- 1. 我怎樣才能插入查詢與兩個if(isset報表?
- 2. 我怎樣才能讓兩個查詢一次MongoDB中
- 3. 我怎樣才能加入SQL查詢兩個表?
- 4. 我怎樣才能訪問用戶?
- 5. 我怎樣才能獲得訪問Android
- 6. 我怎樣才能訪問StackOverflow數據?
- 7. 我怎樣才能訪問dojox圖表?
- 8. Symfony的1.4 - 我怎樣才能查詢
- 9. 我怎樣才能在PHP
- 10. 我怎樣才能在QT
- 11. 我怎樣才能從兩個查詢從同一個表中創建兩列
- 12. 我怎樣才能在JSP
- 13. 我怎樣才能在MATLAB
- 14. 我怎樣才能訪問共享成員在另一個類
- 15. 我怎樣才能讓一個後臺頁面訪問我探
- 16. LINQ - 我怎樣才能在一個查詢
- 17. 我怎樣才能在一個SELECT查詢
- 18. 我怎樣才能把這個自定義Linq查詢查看?
- 19. 我怎樣才能
- 20. 我怎樣才能在MySQL查詢連接兩個不同的看法
- 21. 我怎樣才能在Doctrine2
- 22. 我怎樣才能把這個寫成一個查詢?
- 23. 我怎樣才能讓這個MySQL查詢2個表
- 24. 我怎樣才能加入這個2個MySQL查詢一起
- 25. 我怎樣才能在RSPEC
- 26. 我怎樣才能
- 27. 我怎樣才能
- 28. 我怎樣才能
- 29. 我怎樣才能在Ruby2.4
- 30. 我怎樣才能在MySQL
您是否有標識記錄ID(流水號從1到n,爲n的記錄數)表中的任意列? – FDavidov
如何區分上半年和下半年,記住記錄順序在數據庫中沒有意義? –
嗨!我有一個IDNumber,但我需要在查詢中使用另一個標準。我認爲在Count記錄中將記錄數除以2(生成一個N整數),在查詢中選擇第一個查詢中記錄的N個頂部,並創建第二個不匹配的查詢。 表格的結構是: 1.Id-Autonumber 2.ProductName-Text 3.價格 – KEOC