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

Tham gia và nhiều và điều kiện

Bạn sẽ cần sử dụng kết hợp IN()GROUP BY ... HAVING để đạt được điều này. Cũng không cần tham gia nếu tất cả những gì bạn cần là ID người dùng. Vì vậy, một cái gì đó như:

SELECT user, COUNT(attribute) AS attribute_count
FROM attributes
WHERE attribute IN(...) /* include your set of attributes here */
GROUP BY user
HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */

Nếu bạn cần id người dùng và tên, bạn có thể chỉ cần tham gia tập hợp bản ghi này bắt nguồn từ truy vấn ở trên dưới dạng bộ lọc cho bảng người dùng:

SELECT user.id, user.name
FROM user
INNER JOIN
  (
    SELECT user, COUNT(attribute) AS attribute_count
    FROM attributes
    WHERE attribute IN(...) /* include your set of attributes here */
    GROUP BY user
    HAVING attribute_count = ? /* include number equal to number of attribute ID's in IN() above */
  ) AS filter
  ON user.id = filter.user


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN VÀO và lỗi biến Không khai báo

  2. MySQL:sự khác biệt của hai tập kết quả

  3. Truy vấn SQL để lấy Tổng của tất cả các giá trị cột trong hàng cuối cùng của tập kết quả cùng với tổng của hàng (nhóm theo)

  4. Hạn chế thực thi PHP?

  5. tomcat7:Không thể tải lớp trình điều khiển JDBC [com.mysql.jdbc.Driver]