Rumah > Soal Jawab > teks badan
Saya pasti ini adalah penyelesaian yang mudah tetapi saya tidak dapat menemuinya di mana-mana. Saya cuba menggunakan DAN untuk mempengaruhi hasil pertanyaan. Pertanyaannya adalah seperti berikut.
select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened;
Jadi pertanyaan pertama berfungsi dengan baik. Ia hanya memberi saya baris di mana tarikh log_in adalah kurang daripada tarikh_dibuka dan kemudian jumlah perbezaan hari antara kedua-duanya, yang sangat bagus. Walau bagaimanapun, saya ingin menambah DAN pada pertanyaan untuk mengecualikan jumlah tertentu. Contohnya, contoh berikut:
select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened and date_diff > 1;
Masalahnya ialah lajur alias date_diff tidak dikenali sebagai lajur sebenar, jadi saya mendapat mesej ralat. Saya cuba menggunakan HAVING dan bukannya DAN, tetapi itu tidak berfungsi (bukan seperti yang saya fikirkan). Saya pada asasnya mahu mengecualikan baris dengan sifar. Adakah sesiapa tahu apa yang saya akan gunakan dan bukannya "dan date_diff > 1"?
P粉3080890802024-03-23 10:52:05
Ulang ungkapan dalam klausa where (iaitu gunakan datediff(log_in, date_opened) > 1
而不是 date_diff > 1
), atau gunakan jadual terbitan dan kemudian tambahkan syarat dalam pertanyaan yang dilampirkan.
Contoh menggunakan jadual terbitan:
select first_name, log_in, date_opened, date_diff from ( select first_name, log_in, date_opened, datediff(log_in, date_opened) as date_diff from table1 where log_in < date_opened ) where date_diff > 1