我的代码:
$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不太熟悉,所以不胜感激任何建议!
答案 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_', '')
");