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

Bergabunglah dengan dua tabel di mana tabel A memiliki nilai tanggal dan perlu menemukan tanggal berikutnya di B di bawah tanggal di A

-- Create and fill first table
CREATE TABLE `id_date` (
  `id` int(11) NOT NULL auto_increment,
  `iddate` date NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `id_date` VALUES(1, '2010-01-13');
INSERT INTO `id_date` VALUES(2, '2011-04-19');
INSERT INTO `id_date` VALUES(3, '2011-05-07');

-- Create and fill second table    
CREATE TABLE `date_val` (
  `mydate` date NOT NULL,
  `myval` varchar(4) collate utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `date_val` VALUES('2009-03-29', '0.5');
INSERT INTO `date_val` VALUES('2010-01-30', '0.55');
INSERT INTO `date_val` VALUES('2011-08-12', '0.67');

-- Get the result table as asked in question
SELECT iddate, t2.mydate, t2.myval
FROM `id_date` t1
JOIN date_val t2 ON t2.mydate <= t1.iddate
AND t2.mydate = ( 
SELECT MAX( t3.mydate ) 
FROM `date_val` t3
WHERE t3.mydate <= t1.iddate )

Apa yang kami lakukan:

  • untuk setiap tanggal dalam id_date tabel (tabel Anda A ),
  • kami menemukan tanggal di date_val tabel (tabel Anda B )
  • yang merupakan tanggal tertinggi dalam date_val tabel (tapi masih lebih kecil dari id_date.date)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hapus baris kosong yang dicetak dari output kueri Hive menggunakan python

  2. Manajer konteks untuk MySQLdb dari Python

  3. Bagaimana cara memasukkan output json ke mysql dengan node js

  4. Cara Mengekspor &Mengimpor Pengguna yang Ada (dengan Hak Istimewanya!)

  5. Ubah nilai AUTO_INCREMENT dengan memilih hasil