-1

SQL ステートメントはあまり得意ではありませんが、知りたいことについて知りたいです。

「y」または「n」値を保持する「可視」列を想像してください。目的の行を「y」に設定する前に、このテーブルをすべての行の「n」値に更新する事前クエリを起動せずに、単一の「y」のみを持つことは可能ですか?

前もって感謝します。

4

2 に答える 2

1

ID 123 の行を表示するように設定する場合は、次のようにします。最初のクエリは、すべての行を更新するのではなく、既に Y に設定されている行のみを更新します。

update MyTable set Visible = 'N' where
Visible = 'Y';
update MyTable set Visible = 'Y' where
ID = 123;

もう 1 つの方法は、Visible をフラグにするのではなく、VisibleDate 列にすることです。次に、その列を表示する行の現在の日付に設定します。次に、現在表示されている行を特定するために、VisibleDate 列から最大日付を選択して行を見つけます。

于 2012-07-18T18:33:27.263 に答える
0

あなたがしていることに対して別のアプローチを検討するかもしれません。テーブルに id と呼ばれる主キー (必要) があるとします。

Visible というテーブルを作成します。

create table Visible (id int)

これで、次のクエリでフラグを作成できます。

select t.*, (case when v.id is not null then 'Y' else 'N' end) as VisibleFlag
from table t left outer join
     Visible v
     on t.id = v.id

このクエリをビューにラップして、他のコーディングを簡素化できます。

これにより、他の行に影響を与えることなく、1 つの行を表示に設定することができます。主キーを使用したテーブル内の 1 つの行の検索は高速な操作であるため、パフォーマンスは非常に優れているはずです。他のタイプのフラグにも同様のテーブルを使用できますが、各行でフラグの名前を指定する必要があります。

于 2012-07-18T18:47:02.103 に答える