微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何基于表sql

如何解决如何基于表sql

我有一张桌子。屏幕截图如下:

table

有两列

  1. item_details_id
  2. 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_id1共有的所有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 举报,一经查实,本站将立刻删除。