Keputusan pertanyaan MySQL tidak konsisten
P粉514458863
2023-08-15 21:47:39
<p>Saya mempunyai jadual yang dipanggil "urus niaga" yang menyimpan transaksi yang dibuat pada sistem pembayaran tertentu.
Saya ingin mendapatkan laporan harian untuk Julai 2023 (contohnya) dan menjalankan pertanyaan berikut: </p>
<pre class="brush:sql;toolbar:false;">PILIH HARI(DIBUAT), kira(*) DARIPADA `transaksi`
DI MANA STATUS = 'diluluskan' DAN BULAN(DIBUAT) = 07 DAN TAHUN(DIBUAT) = 2023
KUMPULAN MENGIKUT HARI(DIBUAT)
</pra>
<p>Hasilnya melangkau beberapa hari, contohnya untuk hari ke-7 dalam bulan itu, saya tidak mendapat apa-apa, tetapi apabila saya menukar pertanyaan kepada: </p>
<pre class="brush:sql;toolbar:false;">SELECT DAY(CREATED), count(*) from `transaction`
DI MANA STATUS = 'diluluskan' DAN BULAN(DIBUAT) = 07 DAN TAHUN(DIBUAT) = 2023 DAN HARI(DIBUAT) = 7
KUMPULAN MENGIKUT HARI(DIBUAT);
</pra>
<p> (Pada asasnya menambah <code>DAY(CREATED) = 7</code> pada pertanyaan)</p>
<p>Ia mengembalikan kiraan untuk hari ke-7.</p>
<p>Mengapa mereka tidak konsisten?
Bagaimanakah saya boleh menyelesaikan masalah ini dalam pertanyaan pertama? </p>
<p>Terima kasih terlebih dahulu :)</p>
<p>Edit:
Struktur jadual dan contoh data: </p>
<pre class="brush:sql;toolbar:false;">BUAT JADUAL `transaksi` (
`ID` int BUKAN NULL,
`PLATFORM_ID` int NOT NULL,
`ENTITY_ID` int NOT NULL,
`RELATED_TRANSACTION_ID` int NOT NULL DEFAULT '0',
`ID_ORIGIN` varchar(120) BUKAN NULL,
`BANK` varchar(64) LALAI NULL,
`AMOUNT` dua kali ganda BUKAN NULL,
`MATAWANG` varchar(3) BUKAN NULL,
`JENIS` varchar(2) SET WATAK utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`DIBUAT` tarikh masa BUKAN NULL,
`CARD_NO` varchar(20) LALAI NULL,
`JENAMA_KARD` varchar(45) LALAI NULL,
`CARD_EXPIRE_YEAR` int DEFAULT NULL,
`CARD_EXPIRE_MONTH` varchar(45) LALAI NULL,
`HOLDER_NAME` varchar(256) SET WATAK utf8mb4 COLLATE utf8mb4_0900_ai_ci LAILA NULL,
`EMAIL` varchar(256) LALAI NULL,
`STATUS` enum('diluluskan', 'ditolak', 'ditapis', 'belum selesai') SET WATAK utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
`IS_3D` tinyint(1) lalai NULL,
`CREATED_AT` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`AMOUNTEUR` berganda lalai NULL,
`IS_PENIPUAN` tinyint(1) BUKAN NULL LAILA '0',
`FRAUD_DATE` tarikh DEFAULT NULL,
`KYC_DATE` datetime LALAI NULL
) ENGINE=CHARSET LALAI InnoDB=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
</pra>
<p>Contoh sisipan: </p>
<pre class="brush:sql;toolbar:false;">INSERT IN TO `transaction` (`ID`, `PLATFORM_ID`, `ENTITY_ID`, `RELATED_TRANSACTION_ID`, `ORIGIN_ID`, `BANK`, `AMOUNT` . AMOUNTEUR`, `IS_FRAUD`, `FRAUD_DATE`, `KYC_DATE`) NILAI
(1, 1, 87, 0, '219114359', 'BEBERAPA BANK', 150, 'USD', 'DB', '2022-02-01 00:00:17', '000000XXXXXX0000', 'MasterCard', 2025 , '06', 'NAME FAMILY', 'aaaaaaaaa@gmail.com', 'approved', 0, '2022-08-25 13:12:58', 150.7605, 0, NULL, NULL);
</pra>
<p>Saya telah meninggalkan definisi indeks kerana saya rasa ia tidak relevan dalam kes ini. </p>
Selepas menjalankannya dalam konsol MySQL, saya mendapati masalahnya adalah mudah Sistem PhpMyAdmin hanya menghadkan tontonan kepada 25 baris...
Ini adalah kesilapan saya! :O Terima kasih banyak atas masa dan sokongan anda semua!