查找相同MYSQL表之间的匹配

时间:2016-04-30 23:33:23

标签: mysql sql

根据女士的标准,应用程序可以将女士们与女士们匹配。有两个结构相同的MySQL表。个人的素质用布尔值记录。

表1:GentlemenQualities

身份证/英俊/迷人/富有/运动/时尚

彼得/ 1/1/1/0/0

George / 0/1/0/1/0

玛丽正在寻找一位迷人而英俊的绅士

表2:LadiesCriteria

身份证/英俊/迷人/富有/运动/时尚

Mary / 1/1/0/0/0

以下代码在将新数据输入数据库时​​找到了Mary的绅士:

SELECT ID FROM GentlemenQualities WHERE Handsome = 1 AND Charming = 1

我们找到彼得...我们做了一场比赛!彼得也很富有,但这对玛丽来说并不重要。

彼得的排是从GentlemenQualities删除,而玛丽的排从LadiesCriteria删除

Janice,她想要一个时髦的绅士,她不关心他的其他品质

Janice / 0/0/0/0/1

SELECT ID FROM GentlemenQualities WHERE Fashionable = 1

这是一个空白。 Janice还没有匹配。

现在GentlemenQualities中有一个新条目

Hans / 1/0/1/0/1

如何尽可能有效地将Hans与Janice相匹配? (可能有数百名无与伦比的女士)

我正在使用php&库MySQLi。

2 个答案:

答案 0 :(得分:1)

如果Ladies标准等于或小于Gentlemen标准,那么您应该在以下SQL查询中插入新的Gentlemen数据:

汉斯:

SELECT ID FROM LadiesCriteria
WHERE Handsome <= 1
AND Charming <= 0
AND Rich <= 1
AND Athletic <= 0
AND Fashionable <= 1

你会发现:

Janice | 0 | 0 | 0 | 0 | 1

与彼得:

SELECT ID FROM LadiesCriteria
WHERE Handsome <= 1
AND Charming <= 1
AND Rich <= 1
AND Athletic <= 0
AND Fashionable <= 0

你会发现:

Mary | 1 | 1 | 0 | 0 | 0

但不是Janice,因为她想要一位时尚绅士。

答案 1 :(得分:-1)

您正在使用(|)管道和字符串匹配解析字符串。

我建议不要使用字符串匹配,这是性能错误,而是使用整数来进行比较。创建一个整数模式,然后匹配相应的整数。