简体   繁体   English

如何左边连接两个字段匹配的2个表

[英]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 LE​​FT 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM