用mysql连接表

xmq68pz9  于 2021-06-17  发布在  Mysql
关注(0)|答案(3)|浏览(328)

我有两个mysql表: cpu 以及
cpubench cpu 包含:
id, name, price cpubench 包含: name, mark, rank 我想要那个 markcpubench 添加到 cpu 如果两个表的名称都匹配,则在一个新的列列秩中。
我想我应该用左连接
我找到了以下代码

SELECT users.name AS user,
       products.name AS favorite
FROM users
LEFT JOIN products
ON users.fav = products.id

但我不知道怎么做,我需要添加一个标记列吗 cpu ? 那么如何填写左连接代码。
请尽可能简单地解释
谢谢
编辑1:我的代码已经走了这么远 sql = ("SELECT cpu.id, cpu.name, cpu.price, cpubech.mark, FROM cpu LEFT JOIN cpubench ON cpu.name = cpubench.name") 但是我得到了一个错误:
sql语法有错误;查看与mysql服务器版本相对应的手册,以获得在第1行使用near'from cpu left join cpubench on cpu.name=cpubench.name'的正确语法
编辑2:我已经修复了语法问题,感谢cid,但是现在没有匹配的标记值cpu中的所有标记值都为空,即使我检查了cpubench中是否有标记并且名称相同,请参见:https://imgur.com/a/k86epqe

6vl6ewon

6vl6ewon1#

对你的问题快速而肮脏的回答是

SELECT cpu.id, 
       cpu.name, 
       cpu.price, 
       cpubech.rank,
FROM cpu LEFT JOIN cpubench ON cpu.name = cpubench.name

可以使用 AS 如果你想改变名字的话。
通过这个查询,您将得到 cpu 对于那些没有匹配的 cpubench 你会找到的那排 NULLrank 现场。
使用 JOIN (或 INNER JOIN )只有具有匹配基准的CPU。
如我所说,我要改变你们table的结构:
如果你需要保留这两张table,我会用 id 而不是 namecpubench 作为外键
两个表之间的关系似乎是(0,1)-(1,1),其中每个工作台都有一个cpu,而不是相反。我开始想,如果只有一个表包含两个表的数据是个好主意。

1wnzp6jl

1wnzp6jl2#

是的,这是一个左连接。为了正确执行联接,两个表中都需要类似的列。在您的例子中,您可以将cpu中的nameMap到cpubench中的name。您不必在此处创建新列。代码将自动将从cpubench到cpu的秩附加到两个表中存在的所有名称上。希望一切都会好起来。
从cpu left join cpubench on a.name=b.name中选择cpu.name作为a,cpubench.name作为b

lpwwtiir

lpwwtiir3#

您的查询语法无效(如错误消息所述):所选字段中的逗号过多

SELECT cpu.id, cpu.name, cpu.price, cpubech.mark, FROM ...
--        Remove this --------------------------^

相关问题