使用 MySQL 检查值是否在 PHP 的同一列中出现两次


Check if value appears twice in the same column in PHP using MySQL

假设我有一个表:

id | name | city
------------------
1  | n1   | n1
2  | n2   | c2
3  | n3   | n3
4  | n4   | c4

我想检查列内的插槽中是否已存在值。

某些值可能会在不同的列中多次出现,但不能在同一列中出现两次。

因此,例如n1出现在name中,但也出现在city中,但我不希望它在名称或城市中出现两次。

使用 PDO

您可以在按同一字段分组时使用计数:

 SELECT COUNT(`name`) as count_name FROM `cities` GROUP BY `name` HAVING count_name > 1

这将为您提供多次出现的名称列表。

如果要防止这种情况发生,请在名称字段上设置唯一约束,在城市字段上设置唯一约束。 您可以使用此 SQL 来执行此操作:

ALTER TABLE cities ADD UNIQUE (name)
ALTER TABLE cities ADD UNIQUE (city)

我有一个sql查询,它非常适合您想要的结果:

SELECT * FROM (SELECT * FROM table1 GROUP BY name) AS t GROUP BY city ORDER BY id

GROUP BY是从一列中获取 ditinct 值(这里我们对 2 列使用 GROUP BY 2 次namecity ),AS t是为派生表定义一个别名,ORDER BY用于排序(这是可选的)

这是 SQLFiddle 演示