1

次のように、別のテーブルの行数で 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 構文にエラーがあります。4 行目の 'SELECT * FROM c_alianca' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

4 に答える 4

5

条件をクエリして、このようなものを挿入してみませんか?

INSERT INTO pacte (alianca_en_pacte, tipus)
SELECT id_alianca_en_pacte1 ,tipus_pacte1
FROM c_alianca
WHERE tipus_pacte1 IS NOT NULL
于 2012-04-23T10:48:13.033 に答える
4

MySQLは現在、への引数としてサブクエリを持つことをサポートしていませんLIMIT。2つのクエリでユーザー変数を使用する必要があります。

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;
于 2012-04-23T10:47:55.730 に答える
3

これはあなたが求めているものですか

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
于 2012-04-23T10:43:33.257 に答える
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';
于 2016-06-16T08:00:19.847 に答える