ウサギに関する情報を保存するテーブルがあります。次のようになります。
create table rabbits (rabbit_id bigserial primary key, info json not null);
insert into rabbits (info) values
('{"name":"Henry", "food":["lettuce","carrots"]}'),
('{"name":"Herald","food":["carrots","zucchini"]}'),
('{"name":"Helen", "food":["lettuce","cheese"]}');
にんじんが好きなうさぎをどうやって見つけたらいいの?私はこれを思いつきました:
select info->>'name' from rabbits where exists (
select 1 from json_array_elements(info->'food') as food
where food::text = '"carrots"'
);
そのクエリは好きではありません。それは混乱です。
フルタイムのうさぎ飼いとして、データベーススキーマを変更する時間はありません。うさぎにちゃんとした餌をあげたいだけです。そのクエリを行うためのより読みやすい方法はありますか?
1
興味深い質問です。私はそれをいじってみましたが、それから私には気づきました、あなたが「より良い」とはどういう意味かわかりません。どのような基準で回答を判断していますか?読みやすさ?効率?その他?
—
David S
@DavidS:(質問を更新しました。)効率よりも可読性を優先します。スキーマを修正したままにしているので、フルテーブルスキャン以上のものは期待できません。
—
スノーボール2013年
うさぎのせいでこの質問に賛成したのは間違いですか。
—
osman 2017
私はうさぎのせいでこの質問に賛成したところ、コメント@osman
—
1valdisを表示
あなたのコメントを見て、うさぎのせいで賛成する必要があることに気づきました
—
Peter Aron Zentai