我正在开发测试应用程序,用户将在输入框中输入他们的选择查询,如果它们与“正确答案”查询相同,应用程序必须对它们进行比较。
“正确答案”查询在数据库中,可比较的选择由用户输入。
我读到了“除了”和“相交”,但是它们并不存在于mysql中。
例如,我有一个数据库结构:

申请书中的问题:
正确答案-
SELECT FIRSTNAME, LASTNAME, DATEOFBIRTH
FROM PERSON
JOIN STUDENTS ON PERSONID=STUDENTID
WHERE GENDER=’F’ AND FIRSTNAME=’YANA’ AND LASTNAME<>’TAYLOR’我想检查返回的结果是否相同。错误的答案将是mysql查询,例如带有别名列的查询:
SELECT FIRSTNAME as first_name, LASTNAME as last_name, DATEOFBIRTH as date_of_birth ....甚至类似于语句(如果它返回更多的结果):
WHERE GENDER=’F’ AND FIRSTNAME LIKE '%YANA%' AND LASTNAME<>'TAYLOR'因此,我的问题是如何比较以下两个查询的结果:
发布于 2015-08-25 17:13:09
在我看来,最好的方法是运行这两个查询(存储的查询和类型化的查询),然后读取两个结果来分离数组,并分析结果:
count()将指示行数是否相等。if($array1 === $array2)将告诉您两个数组是否具有相同的键和值。如果您不需要分析SQL语句格式,只需要知道查询是否运行良好并带来正确的数据,那么这个方法就足够了。
发布于 2015-08-25 17:17:57
这可能有点贪婪,但是您可以为每个记录创建一个MD5,然后为所有这些MD5计算一个MD5。比较这两个值,如果它们是正确的,则结果是相同的。
例如
SELECT md5(GROUP_CONCAT(a.md)) FROM (
SELECT
first_name, LASTNAME,
md5(concat(first_name, LASTNAME)) as md from PERSON
) as a;https://stackoverflow.com/questions/32209864
复制相似问题