mysql表左连接不匹配(mysql,python)

tpxzln5u  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(350)

已解决请参见注解和解决方案
我有两个scraper,它们将刮取的数据存储在两个sql表中:cpu和cpubench。
cpu包含:name,price,id(这在scraper中不是常量),mark
cpubench包含:name、mark、cpurank
以下是这些表中的一个片段:
中央处理器 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 普本奇 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小提琴:https://www.db-fiddle.com/f/sngju1uubnmf56evvtyu6h/3
我在python中尝试了fiddle中的代码,但所有cpu.mark值都为null。
谢谢

bxgwgixi

bxgwgixi1#

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

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

SELECT * FROM cpu;

相关问题