我正在制作测试应用程序,用户将在输入框中输入他们的选择查询,并且应用程序必须比较它们是否与"正确的答案相同"查询。
"正确答案"查询在数据库中,可比较的选择由用户输入。
我喜欢EXCEPT和INTERSECT,但它们并不存在于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'
所以我的问题是如何比较两个查询之间的结果:
答案 0 :(得分:0)
在我看来,最好的方法是运行两个查询(存储的查询和键入的查询),然后将两个结果读取到单独的数组,并分析结果:
count()
将判断行数是否相等。if($array1 === $array2)
将告诉您两个数组是否具有相同的键和值。如果您不需要分析SQL语句格式,只需知道查询是否正常运行并带来正确的数据,那么这种方法就足够了。
答案 1 :(得分:0)
这可能有点贪心,但您可以为每条记录创建一个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;