gpt4 book ai didi

MySQL 查询 "AND"带有多个复选框和选择菜单的搜索表单

转载 作者:行者123 更新时间:2023-11-29 03:07:08 25 4
gpt4 key购买 nike

我有一张 table :

item_id  | property_id | value |
================================
1 | 100 | 1 |
1 | 101 | 1 |
1 | 102 | 0 |
2 | 100 | 1 |
2 | 101 | 1 |
2 | 102 | 1 |
2 | 120 | black |
3 | 100 | 1 |
3 | 101 | 0 |
3 | 102 | 1 |
4 | 121 | big |
...

我想通过具有多个复选框和选择菜单的表单执行“AND”搜索(每个复选框和选择菜单的名称都类似于“property_id”)。

示例:

  1. 当我选中复选框 100 和 101 时,查询的期望结果是 item_id = 1, 2。
  2. 当我选中复选框 100、101 并从选择菜单 120 中选择“黑色”时,期望的结果是 item_id = 2。
  3. 当我选中复选框 100、101,从选择菜单 120 中选择“黑色”,并从选择菜单 121 中选择“大”时,期望的结果是 item_id = NULL。

选中的属性(复选框和选择菜单)的数量可能会有所不同。

我试过了:

SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 2

但它仅适用于复选框和值 0 或 1。我在使用选择菜单(示例 2. 或 3.)实现它时遇到问题

我希望这能解释我正在尝试做的事情。提前致谢!

最佳答案

对您的查询进行最少的更改:

SELECT item_id
FROM yourtable
WHERE property_id IN (100, 101)
AND value = 1
OR property_id = 120
AND value = 'black'
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 3 ;

相当于:

SELECT item_id
FROM yourtable
WHERE property_id = 100 AND value = 1
OR property_id = 101 AND value = 1
OR property_id = 120 AND value = 'black'
GROUP BY item_id
HAVING COUNT(DISTINCT property_id) = 3 ;

关于MySQL 查询 "AND"带有多个复选框和选择菜单的搜索表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551447/

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