副問い合わせに関して、
sql-1とsql-2で実行結果が異なります。
どう違うかというと
・sql-1ではupdateはされるのですが、AffectedRows : 0になります。
・sql-2でもupdateはされますが、AffectedRows : 1になります。
なぜ結果が違ってくるかどなたかご存知の方いらっしゃらないでしょうか??
登場するテーブルに関してざっとご説明すると
店舗アプリを作成しており、
places: 店舗の座席に関するテーブル
payment: 会計に関するテーブル
が基本です。
この座席と会計の紐付けをしている中間テーブルに当たるのが、payment_tag_placesになります。
###### sql-1 ###### UPDATE places SET status = ? WHERE place_name IN ( SELECT place_name::text --- sql-2と条件は異なりますが、最終的には'hogehoge'になります。 FROM payment_tag_places WHERE payment_id = ? ) RETURNING id, status;
###### sql-2 ###### UPDATE places SET status = ? WHERE place_name IN ( 'hogehoge'::text ) RETURNING id, status;
> sql-1とsql-2で実行結果が異なります。
AffectedRowsの数だけ異なるのですか?テーブルの中身も違うのでしょうか?
ご質問ありがとうございます!
AffectedRowsの数だけ異なります。
テーブルの中身は同じです。
IN ()の中に、複数行返されるか、単純文字列を置くか、の違い? string_agg()してみるとかしたら変わるかもよ?
下記の実行結果が、'hogehoge'ではないからだと思います。
SELECT
place_name::text --- sql-2と条件は異なりますが、最終的には'hogehoge'になります。
FROM
payment_tag_places
WHERE
payment_id = ?