mysql - SQL 比较表中的两行以找出有多少值不同

标签 mysql sql

我有下表用于存储用户数据:

例如

TABLE: users
COLUMNS:
...
maritalStatus (INT)   - FK
gender        (CHAR)
occupation    (INT)   - FK
...

现在我想比较这个表中的两个用户,看看有多少列与任何两个给定用户(比如用户 X 和用户 Y)匹配

我通过 mySQL 存储过程分别获取每个值然后比较它们

例如

    SELECT maritalStatus from users where userID = X INTO myVar1;
    SELECT maritalStatus from users where userID = Y INTO myVar2;

    IF myVar1 = myVar2 THEN

    ...

    END IF;

有没有更短的使用 SQL 查询的方法,我可以比较表中的两行并查看 哪些列不同?我不需要知道它们到底有多少不同,只是 需要知道它们是否包含相同的值。我也只会比较选定的列, 不是用户表中的每一列。

最佳答案

这将为用户 x 和用户 y 选择相同的列数:

SELECT ( u1.martialStatus <> u2.martialStatus )
     + ( u1.gender        <> u2.gender        )
     + ( u1.occupation    <> u2.occupation    )
FROM
  users u1,
  users u2
WHERE u1.id = x
  AND u2.id = y

关于mysql - SQL 比较表中的两行以找出有多少值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493804/

相关文章:

sql - 如何在 PostgreSQL 中批量插入新行

c# - 如何在 C# 中处理客户端-服务器应用程序中的数据库并发?

使用 FULLTEXT 索引的 MySQL 查询速度慢

mysql - 提高仅增长表(不删除)的记录计数性能

sql - 检查登录的截断/更改权限

mysql - 在连接上过滤还是在哪里过滤?有什么不同?

mysql - 记录mysql存储过程sqls

php - 在 INSERT 时添加(分钟/小时/天/月/年)到日期

mysql,查找表中的频率

PHP 搜索查询精确单词匹配 CONCAT