gpt4 book ai didi

mysql - 需要将一个表中的所有数据通过 JOIN 连接到另一个表,并在多个 ROW 上使用多个 AND

转载 作者:行者123 更新时间:2023-11-29 13:15:47 24 4
gpt4 key购买 nike

我需要将 IN 子句的参数与 AND 子句一起使用。

我有一张 table

        HOTEL
______________________
| id | name | address |
______________________
| 1 | A | ABC |
______________________
| 2 | B | BCD |
______________________

表 2

    AMENITY
_____________
| id | name |
_____________
| 1 | X |
_____________
| 2 | Y |
_____________
| 3 | Z |
_____________

表 3

  HOTEL AMENITY
_____________________________
| id | hotel_id | amenity_id |
_____________________________
| 1 | 1 | 1 |
_____________________________
| 2 | 1 | 2 |
_____________________________

我需要找到具有 X 和 Z 设施的酒店。 我正在使用 QUERY LIKE

  SELECT `h.id` , `h.name`  FROM `hotel` AS `h` 
INNER JOIN `hotel_amenity` AS `ha` ON `h`.`id` = `ha`.`hotel_id`
INNER JOIN `amenity` AS `a` ON `ha`.`amenity_id` = `a`.`id`
WHERE
`a`.`id` IN( '1' , '3')
GROUP BY `h`.`id`

这为所有酒店提供了 or 子句,有没有办法将这个 IN 子句与 AND 一起使用或者我可以在这里提供 ALL 子句。

最佳答案

您已经将其过滤为一个组。它应该进行分组,然后检查是否符合预期。HAVING 会执行此操作。

  SELECT `h.id` , `h.name`  FROM `hotel` AS `h` 
INNER JOIN `hotel_amenity` AS `ha` ON `h`.`id` = `ha`.`hotel_id`
INNER JOIN `amenity` AS `a` ON `ha`.`amenity_id` = `a`.`id`
GROUP BY `h`.`id`
HAVING COUNT( case when a.id in (1,3) then 1 else null end ) = 2

关于mysql - 需要将一个表中的所有数据通过 JOIN 连接到另一个表,并在多个 ROW 上使用多个 AND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21474677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com