重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ただいま、postgresを使用して開発中です。
そこで、下記のようなSQL文を書いているのですが、
できれば、多次元配列の「b.code」の記述順で表示したいのですが、
下記のSQL文を実行すると「a.code」の記述順で表示されます。
どのようなSQL文に変更すればよろしいでしょうか?
SQL:
select a.name as aname , b.name as bname from atable a, btable b where a.code = any(b.code[1:1]);

atable
code | neme
--------------
2 | AAA
1 | BBB

btable
code | name
----------------------
{{1,2},{3,0}} | DDD

『現在の結果』
aname bname
---------------
AAA | DDD
BBB | DDD

『得たい結果』
aname bname
---------------
BBB | DDD
AAA | DDD


長くなりましたが、よろしくお願いします。

A 回答 (1件)

何をやりたいのか、説明及び提示データが少なくて、分かりづらいです。



>できれば、多次元配列の「b.code」の記述順で表示したいのですが、
>下記のSQL文を実行すると「a.code」の記述順で表示されます。

認識に誤りがあります。
データ量が少ない、削除をまったく行っていないといった要因で、「a.code」の記述順のように見えているだけです。実際には、どういう順序で検索されるかは、order by指定がないので、RDBMS側では保証していません。

配列を使う目的は、何でしょうか?
PostgreSQLのマニュアルでも、配列は使用せず、別の表とした方がいいと書かれています。

order by b.code[1:1]

を追加すれば、現状の提示された範囲のデータでは、期待の動きになるようです。ただ、もっと多様なデータが格納されていた場合、どういった結果になるのを期待しているのか、提示内容だけでは判断できません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
>PostgreSQLのマニュアルでも、配列は使用せず、別の表とした方がいいと書かれています。

今回PostgreSQLを使用するのが初めてで、あまり意識せず配列を使ってしまっていました。

配列を使用しない方法でもう一度考えて見ます。
ありがとうございました。

お礼日時:2009/02/24 17:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!