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

Viết truy vấn gốc sql với kết hợp bên trái và phân trang ở chế độ ngủ đông (springboot)

Tôi đã giải quyết nó ...

Truy vấn cần có dạng như sau:

@Query(
        value = "SELECT * FROM \n" +
                "(institution INNER JOIN user ON institution.user_id = user.id) \n" +
                "LEFT JOIN \n" +
                "(SELECT * FROM \n" +
                "building_institutions \n" +
                "WHERE building_id = :userId)\n" +
                " AS reserved_institutions \n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id \n" +
                " where reserved_institutions.institutions_user_id IS null \n"
                + "ORDER BY ?#{#pageable}"
        ,
        countQuery = "SELECT count(*) FROM \n" +
                "(institution INNER JOIN user ON institution.user_id = user.id) \n" +
                "LEFT JOIN \n" +
                "(SELECT * FROM \n" +
                "building_institutions \n" +
                "WHERE building_id =:userId)\n" +
                " AS reserved_institutions \n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id \n" +
                "where reserved_institutions.institutions_user_id IS null \n" +
                "ORDER BY ?#{#pageable}",
        nativeQuery = true)
Page<Institution> findPotentialInstitutionsByBuildingId(@Param("userId") Long userId, Pageable pageable);

Tôi đã gặp lỗi ở dòng 4 gần WHERE, khi truy vấn của tôi trông như thế này:

@Query(
        value = "SELECT username, password, description, location, title, user_id FROM (institution INNER JOIN user ON institution.user_id = user.id) LEFT JOIN\n" +
                "(SELECT * FROM building_institutions WHERE building_institutions.building_id = 1) AS reserved_institutions\n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id\n" +
                "WHERE reserved_institutions.institutions_user_id IS null ORDER BY ?#{#pageable}",
        nativeQuery = true)
Page<Institution> findPotentialInstitutionsByBuildingId(Long userId, Pageable pageable);

và đó là do tôi không thêm countQuery tham số cho @Query chú thích.

Xin chân thành cảm ơn tất cả các bạn đã cố gắng giúp đỡ.

Tôi hy vọng rằng tôi có thể cứu người khác trong nhiều giờ khốn khổ.

Chúc mừng! :)




  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ắt ngắn với điều kiện

  2. Đang tải thêm các mục từ cơ sở dữ liệu ~ Infinite Scroll

  3. Sửa lỗi cú pháp mysql khi tạo người dùng

  4. Cách tốt nhất để đồng bộ hóa dữ liệu giữa MS Access và MySQL là gì?

  5. Làm cách nào để chọn nhiều cột có cùng tên bằng cách sử dụng truy vấn gốc JPA?