我有一张表如下:
ID USER1 USER2
1 Q Y
2 W Y
3 R Y
4 T Y
5 XY Y

如何检查USER2列何时全部重复?我使用此代码但它无法正常工作
$res = mysqli_query($conn, "SELECT COMLUMN FROM TABLE");
$result = array_unique($res);
if($result == 1 )
{
echo "Unique";
}
else
{
echo "NOT Unique";
}
答案 0 :(得分:4)
只做一个:
SELECT COUNT(USER2) FROM tablename GROUP BY USER2
查看它是否返回1条记录,或者第一条记录值是否等于总记录数。
以下是一个例子:
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT (SELECT COUNT(USER2) FROM tablename GROUP BY USER2 LIMIT 1) = (SELECT COUNT(USER2) FROM tablename)";
$result = $conn->query($sql);
if ($result->fetch_row()[0] == 1)
{
// all same
}
else
{
//not same
}
答案 1 :(得分:1)
假设您正在尝试查找USER2
列重复值,请尝试此查询
SELECT tableName.*, COUNT(*) AS duplicate_count FROM tableName
GROUP BY USER2
HAVING duplicate_count > 1
此查询返回所有重复的USER2
行
答案 2 :(得分:1)
假设USER2列声明为NOT NULL,或者它不包含NULL值,或者如果你想忽略NULL值......那么完成检查的最简单查询之一就是:
SELECT COUNT(DISTINCT t.USER2) AS cnt FROM `TABLE` t
只需获取查询返回的行,并将cnt
与1进行比较,如果它大于1,则会有多个不同的非空值。
在更一般的情况下,当您想要考虑NULL值时,您可能想要使用GROUP BY查询。我可能会使用这样的查询:
SELECT COUNT(1)
FROM ( SELECT t.USER2 AS val FROM `TABLE` t GROUP BY t.USER2 ) s
答案 3 :(得分:0)
选择计数(USER2)为USER2的表组中的临时值,其中temp =' 1'
如果返回任何结果则为uniq。
答案 4 :(得分:0)
您可以使用exists
检查是否存在具有不同user2
值的另一行。如果不是,则所有值都相同。对于使用exists
检查是否存在至少一对不同值的较大表,可能比获取不同值的总数#更快。
select case when exists (
select 1 from mytable t1
where exists (
select 1 from mytable t2
where t2.user2 <> t1.user2
)
) then 'not unique' else 'unique'
end
答案 5 :(得分:0)
您也可以使用 DISTINCT
关键字:
SELECT COUNT(USER2) - COUNT(DISTINCT USER2) FROM tableName
如果结果等于 0
则没有重复项。