sql >> データベース >  >> RDS >> Mysql

2つのクエリを組み合わせて、MySQLの重複をチェックしますか?

    あなたの質問には実際には2つの問題があります。最初の問題は、Numberを作成することです 列は一意で、2番目は列のNameをインクリメントすることです すでに存在する場合は番号を追加します。

    最初の部分

    番号はUNIQUEなので 、UNIQUEを適用します 列の制約。 PRIMARY KEYの可能性があります またはUNIQUE KEY

    列にKEYがない場合 PRIMARYにしたい 、これがALTER ステートメント:

    ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)
    

    ただし、UNIQUEにしたいだけの場合 主キーではありません

    ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)
    

    第2部

    参加せずに実際に行うことができます。

    INSERT INTO TableName(Number, Name)
    SELECT  124 AS Number, 
            CONCAT('Robert', COALESCE(MAX(CAST(REPLACE(Name, 'Robert', '0') AS UNSIGNED)) + 1,'')) AS Name
    FROM    TableName
    WHERE   Name LIKE 'Robert%'
    

    詳細:

    Numberで指定された値の場合 すでに存在する場合、列が一意であるため、エラーがスローされます。削除された投稿からのコメントを読みました: "..番号は一意ではありませんが、存在する場合は、レコードを入力したくありません。" -一意性を追加したくない場合は意味がありません カラムに。その番号がすでに存在するかどうかをどうやって知ることができますか? Numberの存在を少し確認します 私にとっては少し頭上にあるような気がします。したがって、私の最善の推奨事項は、一意性を強制することです。



    1. ポスト/プレスクリプトフックを使用した高度なフェイルオーバー

    2. selectおよびcountクエリを実行するよりもHibernateでページネーションを行うより効率的な方法はありますか?

    3. 番号を省略番号にフォーマットする

    4. AndroidのデータとUI間の緩い結合のベストプラクティス-アダプター、フィルター、CursorLoader、ContentProvider