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

Bạn sử dụng mệnh đề WITH trong MySQL như thế nào?

MySQL trước phiên bản 8.0 không hỗ trợ điều khoản WITH (CTE trong cách nói của SQL Server; Subquery Factoring trong Oracle), vì vậy bạn chỉ cần sử dụng:

  • Bảng TẠM THỜI
  • Bảng ĐÃ KHỞI KIỆN
  • chế độ xem nội tuyến (hiệu quả là mệnh đề WITH đại diện - chúng có thể hoán đổi cho nhau)

Yêu cầu về tính năng này có từ năm 2006.

Như đã đề cập, bạn đã cung cấp một ví dụ kém - không cần thực hiện chọn phụ nếu bạn không thay đổi đầu ra của các cột theo bất kỳ cách nào:

  SELECT * 
    FROM ARTICLE t
    JOIN USERINFO ui ON ui.user_userid = t.article_ownerid
    JOIN CATEGORY c ON c.catid =  t.article_categoryid
   WHERE t.published_ind = 0
ORDER BY t.article_date DESC 
   LIMIT 1, 3

Đây là một ví dụ tốt hơn:

SELECT t.name,
       t.num
  FROM TABLE t
  JOIN (SELECT c.id
               COUNT(*) 'num'
          FROM TABLE c
         WHERE c.column = 'a'
      GROUP BY c.id) ta ON ta.id = t.id


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lặp lại một chuỗi nhiều lần trong MySQL - REPEAT ()

  2. Ví dụ về SEC_TO_TIME () - MySQL

  3. Làm cách nào để tôi có thể tạm thời vô hiệu hóa ràng buộc khóa ngoại trong MySQL?

  4. Đặc quyền của người dùng MySQL trên các máy chủ được chia sẻ

  5. Chèn hàng loạt với SQLAlchemy ORM