0

プレイリスト、トラックリスト、およびプレイリストの保存に使用するxmlexportの3 つのテーブルを作成しました。プレイリスト内のアイテムが重複しないようにするために、プレイリストから挿入したトラックリストを使用し、トラックリストの一番上の行を xmlexport に挿入してから、再生するトラックを .xml 形式でエクスポートします。プレーヤーが読み取るファイル。このプロセスが発生するたびに、トラックリストから行を削除するため、テーブルが最後のアイテムを再生すると空になり、クエリを実行してプレイリスト テーブルからトラックリスト テーブルを更新する必要があります。これは私が遊んでいたものですが、正しく機能していません。

       INSERT INTO dms.test_trk
       SELECT * FROM dms.test_ply
       WHERE row_count() <= 0;
4

2 に答える 2

1

あなたの発言で

 INSERT INTO dms.test_trk
 SELECT * FROM dms.test_ply
 WHERE row_count() <= 0;

正確に何が起こると思いますか?最後の操作 (つまり、このステートメントを実行する前の操作) の結果がゼロと比較され、それに応じて行が test_ply から取得されるかどうかが判断されます。

ただし、row_count は、test_trk にレコードがあるかどうかを何らかの形で示していると考えているようです。

どちらの仮定も間違っているようです。私のテストでは、INSERT の開始時に row_count が -1 にリセットされることが示されているため、INSERT ステートメント内でこの関数を使用することはできません。

代わりに探しているのは、単純な EXISTS 句です。

insert into test_trk
select * from test_ply where not exists (select * from test_trk);
于 2015-10-06T08:26:47.560 に答える