MySQL表左连接不匹配(MySQL,Python)

2024-04-19 05:07:35 发布

您现在位置:Python中文网/ 问答频道 /正文

已解决请参阅评论和解决方案

我有两个scraper,它们将刮取的数据存储在两个SQL表中:cpucpubench。你知道吗

cpu包含:名称、价格、id(这在刮板中不是常量)、标记

cpubench包含:名称、标记、cpurank

以下是这些表中的一个片段:

cpu

name price id mark AMD Ryzen 5 2600 $259.00 jLF48d 0 Intel Core i7-8700K $573.74 sxDzK8 0 AMD Ryzen 7 2700X $449.69 bddxFT 0 Intel Core i5-8600K $396.39 Mr2rxr 0 AMD Ryzen 3 2200G $145.00 RkJtt6 0 Intel Core i9-9900K $829.61 jHZFf7 0 AMD Ryzen 5 2600X $300.00 6mm323 0 Intel Core i5-9600K $419.00 28qhP6 0 Intel Core i7-9700K $659.00 WtyV3C 0 AMD Ryzen 5 1600 $232.61 mV98TW 0

cpubench

name mark cpurank AMD Ryzen 5 2600 13527 160 Intel Core i7-8700K 15962 98 AMD Ryzen 7 2700X 16971 75 Intel Core i5-8600K 12786 175 AMD Ryzen 3 2200G 7325 503 Intel Core i9-9900K 20150 37 AMD Ryzen 5 2600X 14342 135 Intel Core i5-9600K 13498 162 Intel Core i7-9700K 17379 69 AMD Ryzen 5 1600 12264 187

注:

两个表中的所有列都是VARCHAR(255)。你知道吗

表的顺序不是这样的,名称排列得很整齐。你知道吗

我正在使用以下python代码:

mycursor = mydb.cursor()

sql = ("SELECT cpu.id, cpu.name, cpu.price, cpubench.mark FROM cpu LEFT JOIN 
cpubench ON cpu.name = cpubench.name")

mycursor.execute(sql)

它运行正常。你知道吗

但是,cpu中的所有标记值都为空。你知道吗

如何解决这个问题?你知道吗

任何帮助都将不胜感激。你知道吗

更新

我已经创建了一个工作SQL fiddle:https://www.db-fiddle.com/f/sngju1uUBNMF56eVVTYu6H/3

我试过python中的fiddle代码,但都没有成功cpu.标记值为空。你知道吗

谢谢


Tags: name标记core名称idsqlcpumark
1条回答
网友
1楼 · 发布于 2024-04-19 05:07:35

根据评论,我将最终解决方案绑定到这里:

update cpu 
join cpubench on UPPER(TRIM(cpu.`"name"`)) = UPPER(TRIM(cpubench.`"name"`)) 
set cpu.`"mark"` = cpubench.`"mark"`;

SELECT * FROM cpu;

相关问题 更多 >