UPDATEで連番に変更する場合
SET @i := 0; UPDATE animals SET value1= (@i := @i +1) WHERE animal_type=4;animal_type=4で絞り込んだデータのvalue1に連番をセット更新する。連番は1から始まる。
SELECTで連番を作る場合
SET @a = 0; SELECT id, @a := @a + 1 AS new_id, diary_date,diary_note FROM diarys ORDER BY diary_date ASC;diarysテーブルをdiary_dateでソートする。
SET @a = 0; insert into diarys2 SELECT @a := @a + 1 AS id, diary_date,diary_note FROM diarys ORDER BY diary_date ASC;
ALTER TABLE テーブル名 auto_increment = 1;
ALTER TABLE テーブル名 auto_increment = 100;
UPDATE animals LEFT JOIN foods ON animals.food_id = foods.id SET animals.animal_name = food.animal_name2
animalsテーブル
idID | animal_name | animal_value | animal_date | delete_flg | modified |
---|---|---|---|---|---|
34 | ライオン | 1001 | 0000-00-00 | 0 | 2016/6/24 14:50 |
35 | サイ | 1002 | 0000-00-00 | 0 | 2016/6/24 14:50 |
58 | クワガタ | NULL | 0000-00-00 | 0 | 2016/6/29 15:11 |
59 | ライオン | 123 | 0000-00-00 | 0 | 2017/4/10 17:44 |
60 | ライオン | 245 | 0000-00-00 | 0 | 2017/4/10 17:44 |
61 | クワガタ | NULL | 0000-00-00 | 0 | 2016/6/29 15:11 |
重複を調べる
animal_nameの重複を調べる
SELECT MAX(id) AS max_id,animal_name FROM animals WHERE delete_flg=0 GROUP BY animal_name having count(*) >= 2
結果
max_id | animal_name |
---|---|
61 | クワガタ |
60 | ライオン |
応用:重複の無効化(弱点あり)
重複レコードのうち、IDが大きい方のdelete_flgを1にする。
UPDATE
animals T1,
(
select MAX(id) AS max_id
from animals GROUP BY animal_name having count(*) >= 2
) T2
SET
T1.delete_flg = 1
WHERE
T1.id = T2.max_id
SELECT * FROM animals ORDER BY id DESC LIMIT 1
SELECT *
FROM animals
WHERE
value1 = 1
AND value2 = 9
AND value3 = 99
value1だけANDが付いておらず不揃い。SELECT * FROM animals WHERE WHERE 1=1 AND value1 = 1 AND value2 = 9 AND value3 = 99すべての条件にANDが付いており揃っている。
# LIMITで行数制限をかけたデータを取得する
SELECT SQL_CALC_FOUND_ROWS *
FROM animals
WHERE delete_flg = 0
LIMIT 5;
# LIMITがかかっていないデータ件数を取得する。上記のSQL実行後に実行する。
SELECT FOUND_ROWS();
SELECT * FROM animals WHERE text1 LIKE '%¥t%';
SELECT * FROM animals WHERE text1 LIKE '%¥n%';
SELECT * FROM animals WHERE text1 LIKE '%"%';
SELECT * FROM animals WHERE text1 LIKE '%¥'%';
SELECT * FROM animals WHERE text1 LIKE '%,%';
使用例
SELECT * FROM animals WHERE id=99 FOR UPDATE
ALTER TABLE yagis RENAME TO yagis_bk;