私はcsvファイルにhxtt sqlドライバを使用しています。プレーンSQLのみをサポートしています。単純なSQL文を使用してグループ連結をシミュレートする方法はありますか?プレーンSQLでgroup_concatをシミュレートする方法
4
A
答えて
3
どのようにプレーンテキストですか?トリガーを使用することができれば、それをかなり簡単に行うことができます。私は値を連結する順序を指定できるgroup_concat()が必要なときにSQLite3でこのトリックを使用しました(SQLite3はこれを行う方法を提供していません)。
それでは、私たちはこのようなテーブルを持っているとしましょう:
CREATE TABLE t(v TEXT NOT NULL, num INTEGER NOT NULL UNIQUE);
、あなたは、いくつかの区切り文字で、NUMが注文したVの値を連結のは、カンマを言わせたいです。
CREATE TEMP TABLE c(v TEXT);
CREATE TEMP TABLE j(v TEXT);
CREATE TEMP TRIGGER j_ins BEFORE INSERT ON j
FOR EACH ROW
BEGIN
UPDATE c SET v = v || ',' || NEW.v;
INSERT INTO c (v) SELECT NEW.v WHERE NOT EXISTS (SELECT * FROM c);
SELECT RAISE(IGNORE);
END;
今、私たちは次のことができます。
INSERT INTO j (c) SELECT v FROM t ORDER BY num;
SELECT v FROM c; -- this should output the concatenation of the values of v in t
DELETE FROM c;
最後に、これはこれが機能することを示すsqlite3のセッションです:
今SQLite version 3.7.4
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> CREATE TABLE t(v TEXT NOT NULL, num INTEGER NOT NULL UNIQUE);
sqlite> CREATE TEMP TABLE c(v TEXT);
sqlite> CREATE TEMP TABLE j(v TEXT);
sqlite> CREATE TEMP TRIGGER j_ins BEFORE INSERT ON j
...> FOR EACH ROW
...> BEGIN
...> UPDATE c SET v = v || ',' || NEW.v;
...> INSERT INTO c (v) SELECT NEW.v WHERE NOT EXISTS (SELECT * FROM c);
...> SELECT RAISE(IGNORE);
...> END;
sqlite> insert into t (v, num) values (1, 0);
sqlite> insert into t (v, num) values (31, 1);
sqlite> insert into t (v, num) values (52, 2);
sqlite> insert into t (v, num) values (0, 3);
sqlite> SELECT v FROM c;
sqlite> INSERT INTO j (v) SELECT v FROM t ORDER BY num;
sqlite> SELECT v FROM c;
1,31,52,0
sqlite> SELECT v FROM j;
sqlite> DELETE FROM c;
sqlite>
それが依存するので、これは、純粋なSQLではありませんトリガー。再帰的なトリガーとSQLの条件文を実行するすべての方法の間に、あなたはTuring完全なシステムを持っています。しかし、トリガーやプロシージャー拡張がない場合、ジェネレーター・テーブルはありません。
私はhxttについて何も知らないので、おそらくこれはあなたを助けません。しかし、SQLite3はCSVを扱うことができるので、おそらくSQLite3はあなたを助けることができます。
関連する問題
- 1. SQL ServerエラーでGROUP_CONCAT
- 2. SQL GROUP_CONCAT + SUM + AVG
- 3. GROUP_CONCAT for SQL Server
- 4. SQLヘルプ〜GROUP_CONCAT
- 5. Sybase SQL AnywhereでMySQLのbit_count関数をシミュレートする方法は?
- 6. SQL Serverでgroup_concatを使用してクエリを作成する方法
- 7. ピンクノイズをシミュレートする方法
- 8. ハードウェアキープレスイベントをシミュレートする方法
- 9. ソケットエラーをシミュレートする方法
- 10. スプレッドシートをシミュレートする方法
- 11. objectpointersをシミュレートする方法
- 12. SQL ServerでMYSQLのGroup_Concatを実現
- 13. phpQuery - プレーンHTMLを取得する方法
- 14. Railsでサーバレスポンスをシミュレートする方法は?
- 15. Cでキープレスをシミュレートする方法
- 16. ロボットフレームワークでonblurイベントをシミュレートする方法
- 17. jQueryでクリックイベントをシミュレートする方法
- 18. iPhoneでアイシングをシミュレートする方法は?
- 19. Common Lispでシンボルテーブルをシミュレートする方法
- 20. jaspersoftスタジオでテーブルをシミュレートする方法
- 21. C#でキープレスをシミュレートする方法
- 22. ブラウザでクッキードメインをシミュレートする方法
- 23. Bashでキーボードボタンをシミュレートする方法
- 24. JavaScriptでtarget = "_ blank"をシミュレートする方法
- 25. js-cordovaでスワイプをシミュレートする方法
- 26. キーボードイベントでホバーをシミュレートする方法
- 27. SQL Azure環境をローカルでシミュレートする
- 28. Sequelizeでselectクエリでgroup_concatを実行する方法は?
- 29. 方向風をシミュレートする方法は?
- 30. mysqlでgroup_concatサブクエリを最適化する方法は?
HXTTのウェブサイトによると、彼らはcsvファイルで 'GROUP_CONCAT'をサポートしています。ここをクリックしてください:http://www.hxtt.com/text.html –
私はバージョン3を使用しています。バージョン3がサポートしているかどうかわかりません。しかし、私はそれを使用しようとし、エラーが発生しました。 – Luke101
私はアップグレードが問題外だと思いますか? –