我有下表用于存储用户数据:
例如
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/