如何解决如何基于表sql
我有一张桌子。屏幕截图如下:
有两列
- item_details_id
- pay_method_id
在item_details_id中有1,2,1个数据。另一方面,pay_method_id具有1,1,3个数据。
我只想获取常见的pay_method_id值,具体取决于item_details_id。
根据给定的屏幕截图-
在item_details_id中,我的值为'1'和'2'。
-----'1'pay_method_id为'1','3'
-----'2'pay_method_id为'1'
所以我只有'1'数据是pay_method_id的共同点
如果我举一个干净的例子
假设名为笔记本电脑的产品具有Paypal&Skrill付款方式。 另一个名为台式机的产品具有Skrill付款方法。
那么如何获得名为skrill的常见付款方式?
我如何获得价值?我不明白该怎么解决。
任何帮助都会对我有很大帮助。
解决方法
如果您希望pay_method_id
拥有所有可用的item_details_id
,则可以执行以下操作:
select pay_method_id
from mytable
group by pay_method_id
having count(*) = (select count(distinct item_details_id) from mytable)
如果可能有重复的(pay_method_id,item_details_id)
,请使用:
having count(distinct item_details_id) = (select count(distinct item_details_id) from mytable)
,
您可以使用聚合:
select pay_method_id
from item_pays
where item_details_id in (1,2)
group by pay_method_id
having count(distinct item_details_id) = 2;
这将返回pay_method_id
item_details_id
和1
共有的所有2
,这就是我解释您的问题的方式。
这将检查商品是否具有相同的报酬
CREATE TABLE item_pays ( `item_details_id` INTEGER,`pay_method_id` INTEGER ); INSERT INTO item_pays (`item_details_id`,`pay_method_id`) VALUES ('1','1'),('2',('1','3');
SELECT `pay_method_id` FROM item_pays GROUP BY `pay_method_id` HAVING COUNT(DISTINCT `item_details_id`) > 1
| pay_method_id | | ------------: | | 1 |
SELECT `pay_method_id`,GROUP_CONCAT(DISTINCT `item_details_id`) items FROM item_pays GROUP BY `pay_method_id` HAVING COUNT(DISTINCT `item_details_id`) > 1
pay_method_id | items ------------: | :---- 1 | 1,2
db 提琴here
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。