[解決済み] WHERE句にSELECT文を含むSQL DELETE文の書き方とは?
2022-03-02 19:05:26
質問内容
データベース Sybase Advantage 11
データを正規化するために、私は次のような結果を削除しようとしています。
SELECT
ステートメントを使用します。
SELECT tableA.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;
これは
DELETE
という文を思いつきました。
DELETE FROM tableA
WHERE (SELECT q.entitynum
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date'))
;
このステートメントを実行しようとすると、継続的にこのエラーが発生します。
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = S0000; NativeError = 2124;
[iAnywhere Solutions][Advantage SQL Engine]Invalid operand for operator: = Boolean value
cannot be operated with non-Boolean value.
この文も試してみました。
DELETE FROM tableA
INNER JOIN tableB u on (u.qlabel = tableA.entityrole AND u.fieldnum = tableA.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10)
OR tableA.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date')
;
という結果になる。
ERROR IN SCRIPT: poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117;
[iAnywhere Solutions][Advantage SQL Engine] Unexpected token: INNER -- Expecting semicolon.
-- Location of error in the SQL statement is: 23 (line: 2 column: 1)
適切なデータが削除されるようなDELETEクエリを適切に構築するために、誰か助けてくれませんか?
どのように解決するのですか?
正しいレコードを削除するためには、TableA の主キーを特定する必要があります。主キーは、テーブル内の行を一意に識別する単一のカラムまたは複数のカラムの組み合わせである可能性があります。主キーがない場合、ROWID疑似カラムを主キーとして使用することができます。
DELETE FROM tableA
WHERE ROWID IN
( SELECT q.ROWID
FROM tableA q
INNER JOIN tableB u on (u.qlabel = q.entityrole AND u.fieldnum = q.fieldnum)
WHERE (LENGTH(q.memotext) NOT IN (8,9,10) OR q.memotext NOT LIKE '%/%/%')
AND (u.FldFormat = 'Date'));
関連
-
[解決済み】2つの列を分割する方法は?
-
[解決済み】参照するテーブルにプライマリーキーやキャンディデートキーがない
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQLのSELECTでIF...THENを実行するにはどうすればよいですか?
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
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)が間違っています」を解決するにはどうすればよいですか?[重複している]。
-
[解決済み】 "指定された集約関数を含まないクエリを実行しようとしました。"
-
[解決済み】2つの列を分割する方法は?
-
[解決済み】SQL ServerでIdentityカラムを更新する方法は?
-
[解決済み】一括読み込みデータ変換エラー(切り捨て)
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] SQL Server サブクエリが 1 つ以上の値を返しました。これは、サブクエリが =, !=, <, <= , >, >= のように続く場合は許可されません。
-
[解決済み] ORA-00918: 列があいまいに定義されています」を解決する方法
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?