0

助けが必要です。次のような変数 flight_id を持つテーブルが mysql にあります。

flight_id
1R10005
1M10000000000
1M10000000001
1M10000000002
1M10000000003
1M10000000004
1M10000000005
1M10000000006
1M10000000007
1R10006
1M10000000008
1M10000000009
1M10000000010
1M10000000011
1R10007
1M10000000012
1M10000000013
1M10000000014
etc....

「1M100」で始まるすべてflight_idを、flight_id「1R1」に置き換えたい次のようなテーブルを取得したい:

1R10005
1R10005
1R10005
1R10005
1R10005
1R10005
1R10005
1R10005
1R10005
1R10006
1R10006
1R10006
1R10006
1R10006
1R10007
1R10007
1R10007
1R10007

誰かがmysqlクエリで私を助けてくれませんか:)

4

3 に答える 3

2
UPDATE myTable set flight_id=REPLACE(`flightId`, '1M100', '1R1') 
WHERE `flightId` LIKE '1M100%'
于 2012-12-28T11:13:02.087 に答える
1

あなたはこれを試すことができます:

select CASE 
   WHEN `fklightId` like '1M100%' THEN REPLACE(`flightID`, '1M100', '1R1') END 
from your_tablename as flightId;

したがって、次1M10000000001のように出力されます1R100000001

さらにゼロを削除したい場合は、置換文字列のゼロの数を増やしてください

select CASE 
   WHEN `fklightId` like '1M100%' THEN REPLACE(`flightID`, '1M100000000', '1R1') END 
from your_tablename as flightId;

1M10000000001 として与える1R101

于 2012-12-28T11:02:01.587 に答える
1

テーブルを並べ替えるには、ID またはその他の列が必要です。ID がある場合は、次のようなものを使用できます。

UPDATE
  flights inner join (
    select f1.id, max(f2.id) as new_id
    from flights f1 left join flights f2
         on f1.flight_id like '1M100%'
            and f2.flight_id like '1R1%'
            and f1.id>f2.id
    group by f1.id) fmax
  on flights.id=fmax.id
  inner join flights fdesc
  on fmax.new_id=fdesc.id
SET
  flights.flight_id = fdesc.flight_id

内部サブクエリは、すべてのフライト IDについて、説明を取得する場所でnew_idある を返します。idこれnew_idは、1R1 のような説明で、現在の行よりも小さい最大 ID です。

于 2012-12-28T12:32:57.890 に答える