Tapis berbilang nilai id menggunakan Navicat dalam pangkalan data MySQL
P粉285587590
2023-08-28 17:09:38
<p>Saya perlu menapis data menggunakan tarikh tamat tempoh terkini dan harga jualan tanpa mengulangi id_product, saya cuba menyelesaikan masalah ini tetapi saya tidak dapat mencari cara yang betul untuk melakukannya</p>
<p>Ini ialah pertanyaan dan keputusan Navicat</p>
<pre class="brush:php;toolbar:false;">SELECT
product_exp_date.idproduct,
product_exp_date.exp_date,
product_exp_date.selling_price
DARI
produk
SERTAI DALAM
product_exp_date
HIDUP
product.idproduct = product_exp_date.idproduct
KUMPULAN OLEH
product_exp_date.exp_date</pre>
<pre class="brush:php;toolbar:false;">idproduct exp_date selling_price
8 2022-11-01 300
5 2022-06-08 370
5 2022-06-09 350
7 2022-07-01 380
5 2022-09-20 450
6 2022-10-08 140
6 2023-06-08 150</pra>
<p>Saya telah mencuba cara ini</p>
<pre class="brush:php;toolbar:false;">KUMPULAN OLEH
product_exp_date.idproduct</pre>
<p>Tetapi ia memberi saya hasil yang berbeza</p>
<pre class="brush:php;toolbar:false;">idproduct exp_date selling_price
5 2022-06-09 350
6 2023-06-08 150
7 2022-07-01 380
8 2022-11-01 300</pra>
<p>Tetapi saya perlu mendapatkan keputusan ini</p>
<pre class="brush:php;toolbar:false;">idproduct exp_date selling_price
5 2022-06-08 370
6 2022-10-08 140
7 2022-07-01 380
8 2022-11-01 300</pra>
<p>Senarai Produk</p>
<pre class="brush:php;toolbar:false;">productid product_name
5A
6B
7 C
8 D</pra>
<p>Product_EXP_DateTable</p>
<pre class="brush:php;toolbar:false;">idproduct_exp_date idproduct exp_date selling_price
1 5 2022-06-09 350
2 6 2023-06-08 150
3 5 2022-06-08 370
4 5 2022-09-20 450
5 6 2022-10-08 140
6 7 2022-07-01 380
7 8 2022-11-01 300</pra>
<p>Kadangkala pertanyaan saya mempunyai beberapa ralat, bagaimanapun saya memerlukan bantuan untuk menyelesaikan masalah ini,
Terima kasih. </p>
Pertama sekali, izinkan saya membetulkan anda; itu bukan pertanyaan Navicat, itu adalah pertanyaan MySQL. Sekarang, ini adalah dua perkara yang berbeza. MySQL ialah pangkalan data, Navicat ialah alat - serupa dengan alatan lain seperti MySQL Workbench, PHPMyAdmin atau SQLyog. Ia direka untuk membolehkan anda melaksanakan fungsi pangkalan data melalui antara muka grafik.
Seterusnya, saya akan memberikan dua pertanyaan, anda boleh menggunakan salah satu daripadanya bergantung pada versi MySQL anda. Pertanyaan pertama adalah seperti berikut:
Anda sepatutnya boleh menjalankan pertanyaan di atas dalam mana-mana versi MySQL atau MariaDB. Idea pertanyaan ini adalah melalui
idproduct
分组获取最小的exp_date
,然后将其作为子查询,再次与product
表进行连接,以匹配这两个提取的值,以便我们可以提取selling_price
.Pertanyaan kedua:
Pertanyaan ini hanya boleh dijalankan pada MySQL v8+ atau MariaDB 10.2+ (dan ke atas) yang menyokong fungsi tetingkap. Idea ini sedikit berbeza berbanding dengan pertanyaan sebelumnya, di sini kita akan menumpukan pada penjanaan
ROW_NUMBER()
,然后将其作为子查询,并只添加一个WHERE
子句。与之前的查询相比,这不需要JOIN
tindakan berdasarkan syarat tertentu.Anda dapat melihat bahawa saya tidak mengambil kira jadual
product
kerana saya tidak melihatnya digunakan dalam pertanyaan asal anda, tetapi jika anda perlu menggabungkannya bersama-sama dan anda tidak dapat memikirkan cara melakukannya, hanya berikan saya akan tinggalkan mesej dan saya akan lihat apa yang boleh saya lakukan.Demo biola