没有分组的COUNT和DISTINCT

时间:2016-03-08 21:09:18

标签: mariadb

我有两张桌子。一个是客户,另一个是客户购买的产品。 当我想获得所有产品和客户的清单时,我会这样做:

words = "nice".upper()
result = [alphabet.index(i) for i in words]
result # [13, 8, 2, 4]

所以我得到(例如)

  • Henri - Potatoes
  • 亨利 - 巧克力
  • 汤姆 - 啤酒

尼斯。现在我想知道我有多少不同的客户。 所以我尝试使用COUNT和DISTINCT。像这样:

    SELECT client_name, prod_id FROM TAB_CLIENT
    INNER JOIN TAB_PROD ON prod_client = client_name

我想得到:

  • 2 - Henri - Potatoes
  • 2 - 亨利 - 巧克力
  • 2 - 汤姆 - 比尔

因为不同客户的总数是2(Henri和Tom),第二列中的客户名称和第三列的产品名称,所以第一列中的“2”。 但实际上如果我添加计数(不同),我只得到一个结果(好像在num_client上有一个“group by”)。而且我不想在client_name上使用GROUP BY,因为在这种情况下我会放弃产品。

是否可以在一个查询中执行该操作,或者我是否必须执行一个选择以进行计数而另一个选择才能获得结果?

我注意到Stack中给出的所有示例都是关于Count / Distinct仅返回数字而不是数字AND结果。

由于

PS:我正在运行MariaDB。

1 个答案:

答案 0 :(得分:1)

SELECT
        ( SELECT COUNT(DISTINCT client_name) FROM TAB_CLIENT ) AS Number_of_clients,
        client_name,
        prod_id
    FROM TAB_CLIENT
    INNER JOIN TAB_PROD ON prod_client = client_name