[英]LIMIT with SELECT COUNT query in SQL
我想用另一個表的行數來限制INSERT,如下所示:
INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
LIMIT 0, SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
以下查詢:
SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
返回4
運行腳本時,出現以下錯誤:
您的SQL語法有誤; 檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在第4行的“ SELECT * FROM c_alianca”附近使用
為什么不只是查詢您的條件並插入這樣的條件?
INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
WHERE tipus_pacte1 IS NOT NULL
MySQL當前不支持將子查詢作為LIMIT
的參數。 您將需要在兩個查詢中使用用戶變量:
SET @limit = (
SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL
);
INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
LIMIT 0, @limit;
但是正如Nesim Razon所建議的那樣 ,在您的示例中可以避免完全使用LIMIT
:
INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
WHERE tipus_pacte1 IS NOT NULL;
這是你所追求的
INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1, tipus_pacte1,
( SELECT COUNT(tipus_pacte1) FROM c_alianca WHERE tipus_pacte1 IS NOT NULL ) AS tipus
FROM c_alianca LIMIT 0
below is the code for Limitation on ID....It is the example for you
Declare @Counter int
Set @Counter=(SELECT Count(Student_ID) as 'StudentCount' FROM CourseSemOne
where Student_ID=1 Having Count(Student_ID) < 6 and Count(Student_ID) > 0)
if(@Counter <6)
print'Sorry! You cannot add more than five subject data for a single student'
else
print'Insert Code';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.