- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
table a (t_a):
id name last first email state country
0 sklass klass steve sklass@foo.com in uk
1 jabid abid john abid@foo.com ny us
2 jcolle colle john jcolle@foo.com wi us
table b (t_b):
id sn given nick email l c
0 steven klass steve sklass@foo.com in uk
1 john abid - abid_j@foo.com ny us
2 johnny colle john jcolle@foo.com wi us
3 john abid - abid@foo.com ny us
上面列出的是一个(缩写的)列和行 mySQL 表。查看这两个表会变得非常清楚,通过严格查看值(不查看 id)并比较匹配的值数量,您将获得这些值匹配。
t_a t_b
0 0
1 3
2 2
- 1
我最终想做的是在 Django 中执行此操作——我不确定这是否重要。过去我使用纯 python 完成此操作,我在其中销毁旧数据并仅创建三个新表。我想摆脱我的实现(如下所列),因为我看到的问题是时间会改变事物,人们来来去去。过去我只是重新生成数据——但现在我想跟踪人们何时离开,而不是简单地替换(删除)数据。我相信通过执行 SQL 更新更优雅并保留历史记录。
我想知道如何直接从按以下方式合并数据的 mySQL(SQL 函数或新表的构造)中获取此合并答案。我想使用纯 SQL 来做到这一点(我相信我可以在 Django 中做到这一点)。所以我正在寻找满足以下条件的解决方案:
现在我的背景是 python,对我来说,最简单的方法是对两个表中较短的一个进行 for 循环,然后对另一个表进行 for 循环,查看匹配项的数量。在代码中,这看起来像这样。
t_a = [ ["sklass", "klass", "steve", "sklass@foo.com", "in", "uk", ],
["jabid", "abid", "john", "abid@foo.com", "ny", "us", ],
["jcolle", "colle", "john", "jcolle@foo.com", "wi", "us", ], ]
t_b = [ ["steven", "klass", "steve", "sklass@foo.com", "in", "uk",],
["john", "abid", "abid_j@foo.com", "ny", "us",],
["johnny", "colle", "john", "jcolle@foo.com", "wi", "us",],
["john", "abid", "abid@foo.com", "ny", "us",], ]
min_match = 3
for person_a in t_a:
match = 0
match_pct = 0.0
match_a_index = t_a.index(person_a)
for person_b in t_b:
new_match_count = len(list(set(person_a) & set(person_b)))
if new_match_count > match:
match = new_match_count
match_b_index = t_b.index(person_b)
match_pct = "%.2f" % (float(new_match_count) / \
float(len(set(person_a + person_b))) * 100)
if match >= min_match:
print match_a_index, match_b_index #, match_pct, match
评论回避了一个问题,你为什么不直接加入电子邮件地址。我不一定知道列中的值会匹配。我确定 t_a 中给定行的值将与 t_b 中行的值相匹配。我想要 t_a 到 t_b 中给定行的最高(最可能)匹配,并且仅当匹配数高于 min_match 时。
最佳答案
您可以在 MySQL 中直接通过通过存储过程执行的游标来执行此操作。
DELIMITER $$
CREATE PROCEDURE `proc_name`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a_id BIGINT UNSIGNED;
DECLARE b_id BIGINT UNSIGNED;
DECLARE x_count INT;
-- something like the following
DECLARE cur1 CURSOR FOR SELECT t_a.id, t_b.id FROM t_a, t_b WHERE t_a.email = t_b.email;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
SELECT COUNT(*) INTO x_count FROM t_a, t_b WHERE t_a.email = t_b.email;
IF(x_count > <some_min_value>) THEN
OPEN cur1;
REPEAT
FETCH cur1 INTO a_id, b_id;
IF NOT done THEN
-- do something here like update rows, remove rows, etc.
-- a_id and b_id hold the two id values for the two tables which
-- I assume to be primary keys
END IF;
UNTIL done END REPEAT;
CLOSE cur1;
END IF;
END
$$
关于python - 连接两个不同的 mySQL 表的最佳方式——从 python 规划 django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1826686/
我正在创建我的第一个 WAR 文件。我一直在试验 ant buildfile 语法,我的 buildfile 的第一部分从我的 Eclipse 项目中获取内容并将其放入 /dist 文件夹中,然后将其
我是一名学习 SQL 和 PHP 的学生,我接到了一项任务,要使用 PHP 和 mySQLi 创建学生反馈表,我真的一直在思考如何为项目设计数据库! 我正在创建一个系统,用户可以在其中登录网页,如果用
这个问题在这里已经有了答案: Is it possbile to test for expected errors when the testee exits with failure using
我目前正在设计和开发一个 Web 应用程序,该应用程序有可能快速增长。我将提供一些一般信息,然后继续我的问题。我会说我是一名中级网络程序员。 以下是一些规范:MySQL - 数据库后端PHP - 用于
我不知何故无法在我的日志解析器应用程序中实现报告功能。 这是我目前所做的: 我正在编写一个应用程序,它读取日志文件并在字符串中搜索可以在用户配置文件中定义的多个正则表达式。对于从配置中解析的每个所谓的
我有兴趣学习如何在多开发团队场景中设计/规划 Web 应用程序开发。 假设“项目经理/负责人”的角色: 成功的 Web 应用程序开发需要哪些“文档”? 需要什么 UML 图,需要什么程度? 在设计/计
table a (t_a): id name last first email state country 0 sklass klass steve
我们建立了一个广泛使用 JQuery UI 的 AJAX 网站。我们有 30 多个自制的 JQuery UI 小部件(动态加载)。我们到处都使用 JQuery native 小部件:对话框、 slid
我是一名优秀的程序员,十分优秀!