【问题标题】:SELECT data with multiple rows using the same id based on 3 columns使用基于 3 列的相同 ID 选择具有多行的数据
【发布时间】:2018-01-17 13:21:35
【问题描述】:

我有一个包含一些数据的数据表。几行属于具有相同 customer_id(Customers 表的索引)的同一客户。该客户已经回答了一些他们有 question_id 的问题(问题表的索引)。在数据表中,还有关于客户对问题0的回答的值列

我正在尝试选择对 question_id 1、2、3 的答案为 0 的 customer_id

我也试过了

SELECT distinct customer_id
FROM Data
WHERE value = 0
AND question_id IN (1, 2, 3);

但我没有得到适当的结果,应该是 24,这是对 question_id 1、2 和 3 的问题回答 0 的客户的 customer_id。

【问题讨论】:

  • 同时指定预期结果。 (有上表数据。)顺便说一句,这里的大多数人想要格式化的文本,而不是图像。
  • 流浪者和戈登林诺夫给出的两个答案都是正确的。

标签: mysql sql select


【解决方案1】:

你很接近。你可以使用group byhaving得到你想要的:

SELECT customer_id
FROM Data
WHERE value = 0 AND question_id IN (1, 2, 3)
GROUP BY customer_id
HAVING COUNT(DISTINCT question_id) = 3;

HAVING 子句指定所有三个问题都已回答 - 答案为 0

【讨论】:

    【解决方案2】:

    GROUP BYHAVING 的另一种方法。

    查询

    select `customer_id`
    from `your_table_name`
    where `question_id` in (1,2,3)
    group by `customer_id`
    having sum(`value`) = 0;
    

    Find a demo here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多