お世話になります。
SQLで日付別の製造IDを生成するにはどのように記述すればよいでしょうか?
製品IDと登録日は自動的に採番登録されていて、
別途、以下のようにユニークな製造IDを付けたいと思います。
製品ID | 製造ID※
1 | 20221017-1
2 | 20221017-2
3 | 20221017-3
4 | 20221018-1
5 | 20221020-1
6 | 20221020-2
・・・
※ハイフンは無しで登録する予定で、DBに製品登録したら確定し
変更せず、製品IDを削除した場合はその製造ID番号も欠番する仕様です。
どの様にSQLを記述したら宜しいでしょうか?
ご教示頂けないでしょうか?<(_ _)>
No.3ベストアンサー
- 回答日時:
INSERT INTO tbl
SELECT
NULL
,dttm
,CONCAT(ch_dt,'-',seq) AS 製品ID
FROM(
--
SELECT
dttm
,dt
,DATE_FORMAT(dt,'%Y%m%d') AS ch_dt
,(
SELECT
COALESCE(
MAX(CAST(RIGHT(製造ID,LENGTH(製造ID)-9) AS INT))
,0)+1
FROM tbl
WHERE DATE(create_at)=dt
) AS seq
FROM(
SELECT
NOW() AS dttm
,CURRENT_DATE AS dt
) AS x
--
) AS t1
;
詳しくご教示賜り御礼申し上げます。
一度テストしてみて、性能も考慮して再考してまいります。
ありがとうございました。
<(_ _)>
No.2
- 回答日時:
日付と日付毎通番の列を持ち、この二つでユニークキーにした方がいいです。
この二つの列から、日付+日付毎通番をビューなどで表示する仕組みにした方がいいです。
日時(または日付)、日付毎の最大通番
↓↑
日付と日付毎通番を文字連結した値
この方式だと、この操作部分だけで冗長なSQLになり、性能も出せません。
どれくらい冗長になるか、この後、提示します。
ハイフンがある形式(長さが1バイト長い)で、MySQL 5.7.xでもMariaDB 10.5.xでも動くと思います。
No.1
- 回答日時:
RDBMSは選択したカテゴリ通り、MySQLですか?
MySQLの場合、バージョンはMySQL 8ですか?5.7とかですか?
登録日のデータ型は、DATE型ですか?CHAR(8)だったりしますか?
製造IDは、登録日毎に製品ID順に1からの通番にするのですね?
通番部分は、何文字にするのですか?
固定長で前ゼロを入れるようにしないと、大小関係が崩れるのでソートなどで問題になります。
固定長にせず、前ゼロもなし
昇順
20221017-111
20221017-22
20221017-3
固定長にして、前ゼロを入れる
昇順
20221017-003
20221017-022
20221017-111
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- Yahoo!メール Yahooアカウントにログインできないです。 1 2023/05/26 09:01
- Yahoo!メール Yahooアカウントにログインできなくなって困っています。 2 2023/05/16 02:28
- 薬剤師・登録販売者・MR ドラッグストアについて 1 2022/05/11 20:45
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- その他(SNS・コミュニケーションサービス) yahoo のIDについて 1 2023/06/28 13:57
- gooブログ Blogの使い方(ブログ・ユーザ設定について) 1 2022/04/23 12:40
- その他(パソコン・周辺機器) Apple iDとアプリについて Apple iDとアプリについて質問させて下さい。 中古で初期化さ 1 2022/06/28 13:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
大学のレポートで企業名を出し...
-
肝油ドロップ配布の経緯
-
民法で習った拡大損害の意味が...
-
賞味期限2017.11.7から1か月以...
-
東芝キャリア製エアコン
-
ハードディスクの製造された年...
-
蛍光灯安定器の製造年とできれ...
-
中国製品の賞味期限の記載方法...
-
ヘアカラーやブリーチなどには...
-
『アルキメンデス』と言うカッ...
-
硬質塩化ビニールについて
-
自分の会社は「弊社」「当社」...
-
鉄筋のSD295とSD345
-
架電、切電、終話・・・??
-
草の単位体積重量について
-
鋼材のたわみに関する質問です...
-
仕事において、「(ある作業を)...
-
職人さんが架台(かだい)を「が...
-
配筋補強の要らない床貫通スリ...
-
お客様に対して「お世話になっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大学のレポートで企業名を出し...
-
肝油ドロップ配布の経緯
-
『アルキメンデス』と言うカッ...
-
東芝キャリア製エアコン
-
ヘアカラーやブリーチなどには...
-
大卒(文系)で製造業に転職する...
-
炊飯器の製造年を知りたいです...
-
カップラーメンの袋の小分けに...
-
中国製品の賞味期限の記載方法...
-
アスファルト合材の捨てバッチ...
-
家電製品の製造年月日って?
-
バイアル瓶とボトルの違い
-
蛍光灯安定器の製造年とできれ...
-
民法で習った拡大損害の意味が...
-
消費(使用)期限の読み方。
-
パン屋で売られているラスクっ...
-
雪肌精 ホワイト パウダーウォ...
-
風呂敷屋さん製造業社を探して...
-
製作と製造
-
給食のパンのチョコクリーム。
おすすめ情報
ご返信ありがとうございます。説明不足でお手数をお掛けしております。
サーバーの仕様は
MySQL 5.7.x 又は MariaDB 10.5.x です。
登録日は、created_at として datetime型で取得予定です。
>製造IDは、登録日毎に製品ID順に1からの通番にするのですね?
はい。
>通番部分は、何文字にするのですか?
決めていなかったのですが4桁あればOKだと思います。
>固定長で前ゼロを入れるようにしないと、大小関係が崩れるのでソートなどで問題になります。
ソートは製品IDで行う予定でした。
宜しくお願いいたします。<(_ _)>