[英]How to Left Join 2 tables where 2 fields match
I want to transfer the data from cms_nodeinfo.description
TO wp_postmeta.meta_value
ONLY IF the cms_nodeinfo.nodeid **MATCHES** wp_postmeta.post_id
AND if the wp_postmeta.meta_key **EQUALS** '_yoast_wpseo_metadesc'
我想将数据从cms_nodeinfo.description
转移到wp_postmeta.meta_value
只有在cms_nodeinfo.nodeid **MATCHES** wp_postmeta.post_id
并且如果wp_postmeta.meta_key **EQUALS** '_yoast_wpseo_metadesc'
Here's an example of a query I tried: 这是我尝试过的一个查询示例:
SELECT
cms_nodeinfo.description, wp_postmeta.meta_value
FROM
cms_nodeinfo, wp_postmeta
WHERE
cms_nodeinfo.nodeid = wp_postmeta.post_id
wp_postmeta.meta_key = _yoast_wpseo_metadesc
ps. PS。 Guys, I'm NOT a coder, I'm learning as I go, please be patient with me. 伙计们,我不是编码员,我正在学习,请耐心等待。 Thank you. 谢谢。
Okay, like this, I think, but I need help with the actual syntax that I could paste into the query: 好的,我想这样,但我需要帮助我可以粘贴到查询中的实际语法:
SELECT cms_nodeinfo.description
FROM cms_nodeinfo
LEFT JOIN wp_postmeta ON cms_nodeinfo.description = wp_postmeta.meta_value
WHERE wp_postmeta.meta_key = _yoast_wpseo_metadesc AND cms_nodeinfo.nodeid = wp_postmeta.post_id
I also tried 我也试过了
SELECT
cms_nodeinfo.description
FROM
cms_nodeinfo
LEFT JOIN cms_nodeinfo.description ON
wp_postmeta.meta_value
WHERE
wp_postmeta.meta_key = _yoast_wpseo_metadesc AND cms_nodeinfo.nodeid = wp_postmeta.post_id
but that returned an error saying that 但那回复了一个错误说
Table 'cms_nodeinfo.description' doesn't exist
The table names are cms_nodeinfo and wp_postmeta. 表名是cms_nodeinfo和wp_postmeta。 The goal is to have the description field from the cms_nodeinfo transfer into the meta_value field of the wp_postmeta table. 目标是将cms_nodeinfo中的description字段转移到wp_postmeta表的meta_value字段中。
I also tried: 我也尝试过:
SELECT
`description`
FROM
cms_nodeinfo
LEFT JOIN wp_postmeta.meta_value WHERE // LINE 5
wp_postmeta.meta_key = _yoast_wpseo_metadesc AND cms_nodeinfo.nodeid = wp_postmeta.post_id
but that returns the following error: 但是会返回以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE
wp_postmeta.meta_key = _yoast_wpseo_metadesc AND cms_nodeinfo.nodeid ' at line 5
I also tried: 我也尝试过:
SELECT
`description`
FROM
cms_nodeinfo
WHERE
wp_postmeta.meta_key = `_yoast_wpseo_metadesc` AND cms_nodeinfo.nodeid = wp_postmeta.post_id
LEFT JOIN cms_nodeinfo.description ON //LINE7
wp_postmeta.meta_value
but that returns:
check the manual that corresponds to your MariaDB server version for the right syntax to use near 'LEFT JOIN cms_nodeinfo.description ON
wp_postmeta.meta_value LIMIT 0, 25' at line 7 (marked)
I also tried: 我也尝试过:
SELECT `cms_nodeinfo`.`description`, `wp_postmeta`.`meta_key`, `cms_nodeinfo`.`nodeid`
FROM `cms_nodeinfo`, `wp_postmeta`
LEFT JOIN `wp_postmeta`.`meta_value`
WHERE `wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`; //LINE4
which returns a syntax error in line 4 (marked)
I've also tried: 我也尝试过:
SELECT
`cms_nodeinfo`.`description`,
`wp_postmeta`.`meta_key`,
`cms_nodeinfo`.`nodeid`
FROM
`cms_nodeinfo`,
`wp_postmeta`
LEFT JOIN `cms_nodeinfo.description`
ON `wp_postmeta`.`meta_value`
WHERE
`wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`;
I also tried: 我也尝试过:
REPLACE `meta_value` WITH `cms_nodeinfo`.`description`, WHERE `wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`;
@Martin Suggested: @Martin建议:
FROM tbl LEFT JOIN x ON xa = tbl.a AND xb = tbl.b FROM tbl LEFT JOIN x ON xa = tbl.a AND xb = tbl.b
So I tried that here: 所以我在这里尝试过:
FROM //POSITION 0
`cms_nodeinfo`,
LEFT JOIN `cms_nodeinfo.description`
ON `wp_postmeta`.`meta_value`
WHERE
`wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`;
which returned the error:
Unrecognized statement type. (near "FROM" at position 0)
Maybe I'm using the wrong type of join? 也许我使用了错误的连接类型? I tried INNER JOIN too and that didn't work either. 我也尝试了INNER JOIN,但也没用。
SELECT
`cms_nodeinfo`.`description`,
`wp_postmeta`.`meta_key`,
`cms_nodeinfo`.`nodeid`
FROM
`cms_nodeinfo`,
`wp_postmeta`
INNER JOIN `wp_postmeta`.`meta_value` WHERE
`wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`;
Okay, this one successfully runs but no data is returned 好的,这个成功运行但没有返回数据
SELECT
`cms_nodeinfo`.`description`
FROM
`cms_nodeinfo`
LEFT JOIN `wp_postmeta` ON `wp_postmeta`.`meta_value` = `cms_nodeinfo`.`description`
WHERE
`wp_postmeta`.`meta_key` = '_yoast_wpseo_metadesc' AND `cms_nodeinfo`.`nodeid` = `wp_postmeta`.`post_id`;
I've also tried RIGHT Join, INNER and FULL, all of which fail. 我也试过RIGHT Join,INNER和FULL,所有这些都失败了。 The field is there, but I can't get the data to populate into it. 该字段在那里,但我无法将数据填充到其中。
Any ideas?? 有任何想法吗?? Help, please?! 请帮助?!
You can update under the conditions you set with this: 您可以在使用此设置的条件下更新:
update
wp_postmeta inner join cms_nodeinfo
on cms_nodeinfo.nodeid = wp_postmeta.post_id
set
wp_postmeta.meta_value = cms_nodeinfo.description
where wp_postmeta.meta_key = '_yoast_wpseo_metadesc'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.