[解決済み] SQL 更新クエリ - 集約が UPDATE 文のセットリストに表示されない場合があります。
2022-02-18 18:56:17
質問
HOLIDAY_DATE_TABLEで最も高い主キー値(HID)でtbl8_update_transactionsのHIDフィールド(NULLの場合)を更新するクエリを書こうとしています。次のようなエラーが発生します。
集約はUPDATE文のセット・リストに表示されない場合があります。
サブクエリを使用してこれを達成する必要があることを読みましたが、助けが必要です。ありがとうございます。
USE BillingUI;
UPDATE tbl8_update_transactions
SET tbl8_update_transactions.HID = MAX(HOLIDAY_DATE_TABLE.HID)
FROM HOLIDAY_DATE_TABLE
WHERE tbl8_update_transactions.HID = NULL;
更新しました。 提案された解決策を試してみました
UPDATE tbl8_update_transactions
SET HID = h.maxHID
FROM (select max(HOLIDAY_DATE_TABLE.HID) as maxHID from HOLIDAY_DATE_TABLE) h
WHERE tbl8_update_transactions.HID IS NULL;
残念ながら、これは0行に影響し、うまくいきません。これは、HIDが外部キーであるためだと思います (
tbl8_update_transactions
). 本当の問題は、テーブルにレコードを挿入するための私のC#の方法論にあるようです(それは外部キーに値を入れずに行を挿入します)。私は、C#のコードではなく、トリガーでこれを処理したいと思います。私のテーブルは次のとおりです。
USE BillingUI;
CREATE TABLE HOLIDAY_DATE_TABLE
(
HID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
);
USE BillingUI;
CREATE TABLE tbl8_update_transactions
(
TID INT IDENTITY PRIMARY KEY,
TABLE_NUMBER nchar(2) NOT NULL,
HOLIDAY_DATE nchar(8) NOT NULL,
FIELD_DESCRIPTION nVARchar(43) NULL,
HID int,
FOREIGN KEY (HID) REFERENCES HOLIDAY_DATE_TABLE (HID)
);
NULL外部キーの問題は、これで解決できるかもしれません。
CREATE TRIGGER tbl8_ins
ON HOLIDAY_DATE_TABLE
FOR INSERT
AS
BEGIN
INSERT INTO tbl8_update_transactions
SELECT * FROM HOLIDAY_DATE_TABLE
WHERE HID = MAX(HID);
END
挿入は成功したが、外部キーが入力されないC#コードをご覧になりたい場合は、以下のようになります。
public ActionResult Create()
{
return View();
}
//
// POST: /Table8/Create
[HttpPost]
public ActionResult Create(HOLIDAY_DATE_TABLE holiday_date_table, tbl8_update_transactions tbl8_update_transaction)
{
if (ModelState.IsValid)
{
db.HOLIDAY_DATE_TABLE.Add(holiday_date_table);
db.SaveChanges();
db.tbl8_update_transactions.Add(tbl8_update_transaction);
db.SaveChanges();
return RedirectToAction("../Billing/HolidayDateTable");
}
return View(holiday_date_table);
}
解決方法は?
クエリーはこのように書きます。
UPDATE tbl8_update_transactions
SET HID = h.maxHID
FROM (select max(HOLIDAY_DATE_TABLE.HID) as maxHID from HOLIDAY_DATE_TABLE) h
WHERE tbl8_update_transactions.HID IS NULL;
を使うのは紛らわしいと思います。
from
節があり、そこにメインテーブルが記載されていない。 という書き方がいい。
UPDATE ut
SET HID = h.maxHID
FROM tbl8_update_transactions ut CROSS JOIN
(select max(HID) as maxHID from HOLIDAY_DATE_TABLE) h
WHERE ut.HID IS NULL;
関連
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しない
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?
-
[解決済み] 1行目4列目(年)の一括読み込みデータ変換エラー(型の不一致または指定したコードページに対して無効な文字)
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL Server の CASE ステートメントで OR がサポートされていない。
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み】結合を使用したSQL更新クエリ
-
[解決済み】外部キー制約。ON UPDATEとON DELETEを使用する場合
-
[解決済み] 外部キー制約は、サイクルまたは複数のカスケードパスの原因となる可能性がありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「パラメータ@objnameがあいまいか、主張する@objtype(COLUMN)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】Excelに合体的な関数はありますか?
-
[解決済み】SQLクエリ「00904. 00000 - "%s: 無効な識別子"
-
[解決済み】SQLが単一グループのグループ関数でないこと
-
[解決済み】Teradata - 計算中に数値のオーバーフローが発生しました。
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] ORA-04063: ビューにエラーがあります
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] 時間を時間単位や10分単位でグループ化する方法