php - 只选择那些在同一个表中有多个值的记录

标签 php mysql sql

我只有那些在同一个表中有多个行的行。例如,请参见下图。 enter image description here

在上图中,您可以看到 2 个突出显示的列,一个用于 useid(u_id),第二个用于产品 ID (product_id)。

因此您可以看到用户 ID 7 有多个产品,例如 (78,40,44,45,53),用户 ID 9 有多个产品,例如 (79,75,79),就像用户 ID 40 有多个产品一样。

所以想要输出,如果特定用户有多个产品,那么它会在产品名称列中显示“多个产品”,而不是显示所有产品名称。 enter image description here

上图显示了所有产品,但如果特定用户有多个产品,我需要显示“多个产品”消息而不是所有产品

我使用了以下查询但没有得到我想要的结果。

SELECT *
FROM orderlist
WHERE product_id IN (
    SELECT product_id
    FROM orderlist
    GROUP BY product_id
    HAVING COUNT(*) > 1
)

最佳答案

您可以在聚合后执行JOINS

SELECT *,
       CASE WHEN c.Counts > 1 THEN 'Multi' ELSE o.ProductName END ProductName 
FROM 
(
     SELECT product_id, COUNT(*) Counts
     FROM orderlist
     GROUP BY product_id
)c INNER JOIN orderlist o ON o.product_id = c.product_id

关于php - 只选择那些在同一个表中有多个值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49313618/

相关文章:

php - UNIQUE 用户名列未更新

php - 在填充的 PHP 下拉列表中选择匹配的值

sql - 添加一列,该列在另一列更改时递增

mysql - 从指定范围内的表中获取条目数

sql - 如何优化这个 MySQL 查询

mysql - 即使有使用键列的 where 子句,删除也会失败

php - 忽略 php 中重复的 mysql 值

php - 难以以小时计算年龄

PHP,cURL 发布数组?

mysql - INSERT INTO ... SELECT 不详细说明所有列