Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Điều kiện NẾU Thực hiện Truy vấn, Khác Thực hiện Truy vấn Khác

CHỈNH SỬA: Những gì tôi nói dưới đây về việc yêu cầu một thủ tục được lưu trữ là KHÔNG ĐÚNG. Hãy thử điều này:

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

Đây thực sự là một biểu thức chữ hoa và nó hoạt động tốt bên ngoài một proc được lưu trữ :-)

Ví dụ:

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)

Câu trả lời cũ bên dưới cho mối quan tâm lịch sử, vì nó đã thu thập số phiếu ủng hộ:

Tôi nghĩ bạn có thể sử dụng phần bên dưới, nhưng chỉ trong một quy trình được lưu trữ:

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

Đây là CASE câu lệnh, khác với CASE biểu thức ... https://dev.mysql.com/doc /refman/5.0/en/case.html có nhiều chi tiết đẫm máu hơn.

Trên thực tế, tôi nghi ngờ nói chung nếu bạn muốn thực hiện các truy vấn khác nhau có điều kiện, bạn sẽ cần phải xem xét các thủ tục được lưu trữ - tôi có thể sai, nhưng đó là cảm giác ruột của tôi tại thời điểm này. Nếu bạn có thể làm điều đó, nó có thể sẽ là với biểu thức CASE!

Một chỉnh sửa cuối cùng:trong bất kỳ ví dụ nào trong thế giới thực, tôi có thể thực hiện bit điều kiện trong ứng dụng của mình và chỉ cần chuyển sang SQL (hoặc ORM sẽ tạo ra SQL của tôi) sau khi tôi quyết định tìm kiếm gì.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật bảng mysql với dữ liệu từ bảng khác

  2. java.sql.SQLException:Không có cơ sở dữ liệu nào được chọn - tại sao?

  3. MySQL với Entity Framework - tôi đang làm gì sai?

  4. Truy vấn chuyển đổi từ datetime sang date mysql

  5. Cách thay đổi múi giờ máy chủ MySQL