Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL:temukan ID pesanan yang hilang

Berikut adalah solusi lain untuk melakukan ini:

CREATE TABLE TEMP 
(n int);
INSERT INTO Temp VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9);

SET @maxid = (SELECT MAX(orders_id) FROM orders);

SELECT     s.id 
FROM
(
    SELECT id
    FROM
    (
       SELECT t4.n * 1000 + t3.n * 100 + t2.n * 10 + t1.n + 1 AS id
       FROM         TEMP AS t1
       CROSS JOIN TEMP AS t2
       CROSS JOIN TEMP AS t3
       CROSS JOIN TEMP AS t4
    ) t 
    WHERE id BETWEEN 1000 AND @maxid
) s 
LEFT JOIN orders t ON s.id = t.`orders_id` 
WHERE t.`orders_id` IS NULL;

Ini akan memberi Anda orders_id s:

ID
1001
1002
1005
1006
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1021
1022
1023
1024

Demo SQL Fiddle

Perhatikan bahwa: Saya membuat TEMP tabel dengan nilai dari 0 hingga 9, untuk digunakan untuk menghasilkan tabel jangkar yang berisi nilai dari 1 hingga 10.000 alih-alih loop sementara yang Anda miliki dalam kueri yang Anda posting. Anda dapat mengontrol nilai dari tabel ini tergantung pada nilai di tabel Anda. Jika Anda memiliki nilai yang melebihi 10000 CROSS JOIN TEMP meja sekali lagi.

Pembaruan: Jika orders_id adalah tipe data varchar masukkan saja ke INTEGER seperti ini:

SELECT     s.id 
FROM
(
    SELECT id
    FROM
    (
       SELECT t4.n * 1000 + t3.n * 100 + t2.n * 10 + t1.n + 1 AS id
       FROM         TEMP AS t1
       CROSS JOIN TEMP AS t2
       CROSS JOIN TEMP AS t3
       CROSS JOIN TEMP AS t4
  ) t WHERE id between 1000 AND @maxid
) s 
LEFT JOIN
(
    SELECT CONVERT(orders_id, UNSIGNED INTEGER) AS orders_id 
    FROM orders
) t ON s.id = t.`orders_id` 
WHERE t.`orders_id` IS NULL;

Demo SQL Fiddle Diperbarui




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat membuat kueri sumber MySQL berfungsi menggunakan modul Python mysqldb

  2. Kode Kerangka MySql dan Entitas Pertama

  3. temukan elemen terbesar ke-N dalam SQL

  4. Bagaimana cara saya menggunakan PHP dengan benar untuk menyandikan objek MySQL ke JSON?

  5. impor CSV ke MySQL dan konversi tanggal