SQL加入具有不同内容的列

时间:2018-03-27 19:44:59

标签: php mysql sql

我的代码:

$newResult = $conn -> query("SELECT wp_nf3_fields.id, wp_nf3_fields.parent_id, wp_postmeta.meta_key
FROM wp_postmeta
LEFT JOIN wp_nf3_fields ON wp_postmeta.meta_key = wp_nf3_fields.id
");

我正在编写一个试图根据列中的条目连接两个数据库表的PHP文件。问题是wp_postmeta.meta_key列中的条目是这样的

_field_1
_field_2

虽然列wp_nf3_fields.id条目是这样的

1
2

我如何匹配这两个?有没有办法从第一列中删除 field 位,以便我可以比较它们?我对PHP很好,但对SQL不太熟悉,所以不胜感激任何建议!

3 个答案:

答案 0 :(得分:4)

您可以使用字符串连接:

FROM wp_postmeta LEFT JOIN
     wp_nf3_fields
     ON wp_postmeta.meta_key = CONCAT('_field_', wp_nf3_fields.id);

答案 1 :(得分:1)

......或者相反:

FROM wp_postmeta LEFT JOIN
     wp_nf3_fields
     ON right(wp_postmeta.meta_key,charindex('_', reverse(wp_postmeta.meta_key))-1) =  wp_nf3_fields.id 

答案 2 :(得分:0)

如果你的字符串总是等于字段你可以使用替换,这样你就可以管理多个数字的数字

  ("SELECT wp_nf3_fields.id
      , wp_nf3_fields.parent_id
      , wp_postmeta.meta_key
  FROM wp_postmeta
  LEFT JOIN wp_nf3_fields 
     ON wwp_nf3_fields.id =  replace(wp_postmeta.meta_key, '_field_', '')
  ");