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

JIKA Kondisi Lakukan Query, Else Lakukan Query Lainnya

EDIT: Apa yang saya katakan di bawah tentang memerlukan prosedur tersimpan TIDAK BENAR. Coba ini:

SELECT CASE WHEN ( (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000 )
    THEN <QUERY A>
    ELSE <QUERY B>
END

Ini, memang, ekspresi kasus, dan berfungsi dengan baik di luar proc yang disimpan :-)

Misalnya:

mysql> SELECT CASE WHEN ( 5 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END;
+---------------------------------------------------------------------+
| CASE WHEN ( 5 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END |
+---------------------------------------------------------------------+
| foo                                                                 |
+---------------------------------------------------------------------+
1 row in set (0.01 sec)

mysql> SELECT CASE WHEN ( 3 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END;
+---------------------------------------------------------------------+
| CASE WHEN ( 3 > 4 ) THEN ( SELECT 'foo' ) ELSE ( SELECT 'bar' ) END |
+---------------------------------------------------------------------+
| bar                                                                 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)

Jawaban lama di bawah untuk kepentingan historis, karena sudah mengumpulkan suara positif:

Anda dapat menggunakan yang di bawah ini menurut saya, tetapi hanya di dalam prosedur tersimpan:

CASE (SELECT COUNT(*) FROM table WHERE term LIKE "term") > 4000
    WHEN 1 THEN <QUERY A>
    ELSE <QUERY B>
END CASE

Ini adalah CASE pernyataan, berbeda dari CASE ekspresi... https://dev.mysql.com/doc /refman/5.0/en/case.html memiliki lebih banyak detail mengerikan.

Sebenarnya, saya menduga secara umum jika Anda ingin menjalankan kueri yang berbeda secara kondisional, Anda perlu melihat ke prosedur tersimpan -- saya bisa saja salah, tetapi itulah firasat saya saat ini. Jika Anda bisa melakukannya, mungkin dengan ekspresi CASE!

Satu suntingan terakhir:dalam contoh dunia nyata apa pun, saya mungkin akan melakukan bit kondisional dalam aplikasi saya, dan hanya menyerahkan ke SQL (atau ke ORM yang akan menghasilkan SQL saya) setelah saya memutuskan apa yang harus dicari.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengembalikan file SQL yang dihasilkan oleh MySQLDump menggunakan command prompt

  2. Terhubung ke database mysql 5.0 menggunakan vbscript murni?

  3. Apakah ada cara untuk memasukkan nilai besar dalam DB mysql tanpa mengubah max_allowed_packet?

  4. Menghitung semua posting yang termasuk dalam kategori DAN subkategorinya

  5. Bagaimana cara MEMILIH baris acak dari tabel dengan jumlah baris yang tepat?