如何根据表 sql 中的列获取共同值

Posted

技术标签:

【中文标题】如何根据表 sql 中的列获取共同值【英文标题】:How to get common value based on a column from a table sql 【发布时间】:2020-11-01 19:30:33 【问题描述】:

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

有两列

    item_details_id pay_method_id

在 item_details_id 中有 1,2,1 个数据。另一方面 pay_method_id 有 1,1,3 数据。

我只想根据 item_details_id 获取 pay_method_id 的常用值。

根据给定的截图-

在 item_details_id 我有“1”和“2”的值。

----- '1' pay_method_id 是 '1', '3'

-----'2' pay_method_id 是'1'

所以我只有“1”个数据是常见的 pay_method_id

如果我举一个干净的例子

假设名为笔记本电脑的产品具有 Paypal 和 Skrill 付款方式。 另一个名为 desktop 的产品具有 Skrill 付款方式..

那么我如何才能获得名为 skrill 的常用付款方式?

如何获得价值?我不明白我该如何解决这个问题。

任何帮助都会对我很有帮助。

【问题讨论】:

你能举一个你想要的输出的例子吗? 所以结果只有 1? 【参考方案1】:

如果您希望pay_method_ids 拥有所有可用的item_details_ids,您可以这样做:

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)

【讨论】:

【参考方案2】:

你可以使用聚合:

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;

这将返回 item_details_id 12 常见的所有 pay_method_ids,这就是我对您问题的解释。

【讨论】:

【参考方案3】:

这将检查项目是否具有相同的报酬

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'),
  ('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 |项目 ------------: | :---- 1 | 1,2

db小提琴here

【讨论】:

我改了答案 绝对没问题,但问题是当我有另一个项目时有一些付款方式 你的描述很难理解,现在你把事情弄得更复杂了,所以做一个小提琴并准确显示结果集。

以上是关于如何根据表 sql 中的列获取共同值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QT C++ 中从表的列中获取 SQL 中的所有值

如何比较两个表的列并将值插入到基于 SQL Server 中存储过程中的比较的新表中

当没有明确的列可以加入时,如何使用另一个表中的值更新 sql 表?

如何根据值 B 对 sql 中的列进行排序,其中字段中的值格式为 A-B-C。我

根据 SQL Server 2008R2 中表中的列获取计数

如何根据jQuery数据表中的列值设置表行的颜色