Mysql 如何比较3个或更多表的行计数并返回布尔值?
我可以得到一个布尔结果,根据这个问题和答案,如果两个表的行数相同: 我在3张桌子上试过:Mysql 如何比较3个或更多表的行计数并返回布尔值?,mysql,boolean,rowcount,Mysql,Boolean,Rowcount,我可以得到一个布尔结果,根据这个问题和答案,如果两个表的行数相同: 我在3张桌子上试过: SELECT CASE WHEN (SELECT count(*) from personal)=(SELECT count(*) from exam)=(SELECT COUNT(*) from contact) THEN 1 ELSE 0 END AS RowCountResult 但是它返回0,而这3个表实际上具有相同的行数,因此它应该返回1。感谢您的帮助 一个类似于: a
SELECT
CASE WHEN (SELECT count(*) from personal)=(SELECT count(*) from exam)=(SELECT COUNT(*) from contact)
THEN 1
ELSE 0
END AS RowCountResult
但是它返回0,而这3个表实际上具有相同的行数,因此它应该返回1。感谢您的帮助 一个类似于:
a = b = c
计算(从左到右)为:
由于(a=b)
是一个布尔表达式,它的计算结果为0
或1
,因此最终的计算结果为1=c
或0=c
,在您的情况下,(很可能)总是false
您应该分别将a
与b
和b
与c
进行比较,并使用操作符和
获得最终结果,如:
a = b AND b = c
因此,您的代码应该是:
SELECT
(SELECT count(*) from personal) = (SELECT count(*) from exam)
AND
(SELECT count(*) from exam) = (SELECT COUNT(*) from contact) AS RowCountResult
或者更好地使用子查询:
SELECT count1 = count2 AND count2 = count3 AS RowCountResult
FROM (
SELECT (SELECT count(*) from personal) count1,
(SELECT count(*) from exam) count2,
(SELECT COUNT(*) from contact) count3
) t
实际上,您不需要使用CASE
表达式。表达式如下:
a = b = c
计算(从左到右)为:
由于(a=b)
是一个布尔表达式,它的计算结果为0
或1
,因此最终的计算结果为1=c
或0=c
,在您的情况下,(很可能)总是false
您应该分别将a
与b
和b
与c
进行比较,并使用操作符和
获得最终结果,如:
a = b AND b = c
因此,您的代码应该是:
SELECT
(SELECT count(*) from personal) = (SELECT count(*) from exam)
AND
(SELECT count(*) from exam) = (SELECT COUNT(*) from contact) AS RowCountResult
或者更好地使用子查询:
SELECT count1 = count2 AND count2 = count3 AS RowCountResult
FROM (
SELECT (SELECT count(*) from personal) count1,
(SELECT count(*) from exam) count2,
(SELECT COUNT(*) from contact) count3
) t
实际上,您不需要使用
CASE
表达式。这是因为您正在将比较结果与第三行计数进行比较,即a=B(将给出一个真或假)与C(在本例中是一个数字)进行比较。在本例中,您应该使用eg(a=B)=(B=C)获得您期望的结果
SELECT
CASE WHEN
((SELECT COUNT(*) FROM Personal) = (SELECT COUNT(*) FROM Exam))
= ((SELECT COUNT(*) FROM Contact) = (SELECT COUNT(*) FROM Exam))
THEN 1
ELSE 0
END
AS RowCountResult
这是因为您正在将比较结果与第三行计数进行比较,即a=B(这将给出一个真或假)与C(在本例中是一个数字)进行比较。在您的情况下,您应该得到您期望的结果,例如(a=B)=(B=C),或者
SELECT
CASE WHEN
((SELECT COUNT(*) FROM Personal) = (SELECT COUNT(*) FROM Exam))
= ((SELECT COUNT(*) FROM Contact) = (SELECT COUNT(*) FROM Exam))
THEN 1
ELSE 0
END
AS RowCountResult
谢谢我现在正在工作,谢谢!我现在正在工作。谢谢你的详细解释。谢谢你的详细解释。