3 回答

TA貢獻1847條經驗 獲得超11個贊
嘗試從SELECT子句中刪除括號。從Microsoft TechNet,使用SELECT子句的INSERT語句的正確語法如下。
INSERT INTO MyTable (PriKey, Description)
SELECT ForeignKey, Description
FROM SomeView
你得到的錯誤,“SELECT將檢查超過MAX_JOIN_SIZE行;檢查你的WHERE并使用SET SQL_BIG_SELECTS = 1或SET SQL_MAX_JOIN_SIZE =#如果SELECT沒問題?!?,實際上是正確的,假設你有兩行BOOK和temp_cheques。您正在嘗試查詢兩個表中的所有行并進行交叉引用,從而產生m * n大小的查詢。在執行可能很長的操作之前,SQL Server正試圖警告您。
SQL_BIG_SELECTS在運行此語句之前設置= 1,然后重試。它應該工作,但請注意,此操作可能需要很長時間。

TA貢獻1829條經驗 獲得超13個贊
B是否包含UNITS列?
temp_cheques和Book的表結構是什么?
在進行+/-和比較時,所有列都應該是數字。
以下簡單的SELECT是否有效?
SELECT b.START_NUMBER+b.UNITS-1 FROM Books B

TA貢獻1811條經驗 獲得超5個贊
查詢的最終版本如下:
Set SQL_BIG_SELECTS = 1;
INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION)
SELECT a.number, b.ID, b.DENOMINATION
FROM temp_cheques a, BOOK b
WHERE a.number BETWEEN b.START_NUMBER AND (b.START_NUMBER+b.UNITS-1);
BETWEEN語句的解析需要括號,SELECT沒有,并且由于兩個表的大?。╰emp_cheques中的215000條記錄,BOOK中的8000條),我打破了選擇大小的限制,要求我設置SQL_BIG_SELECTS = 1 。
添加回答
舉報