我确定答案已经在这里某处,但我找不到我特别需要的东西。在mysql中比较两列相同的连接行
这很简单。我有一个通过WordPress的一对多表(wp_posts和wp_postmeta)。 postmeta表具有引用帖子表的任意数量的行。
我需要比较不同postmeta行的两个值。
实施例:
SELECT *
FROM wp_posts
JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID
WHERE
(
wp_postmeta.meta_key = 'company'
AND
wp_postmeta.meta_value LIKE '%Company 01%'
) AND (
wp_postmeta.meta_key = 'description'
AND
wp_postmeta.meta_value LIKE '%Potato%'
)
在上面的例子中,我需要检查的元键“公司”和“说明”对同一行内的值。但同时,我需要检查另一个元键/值对。
什么是比较这些元键的正确方法?我需要为每个项目比较大约10个独立的元键(将来会更多),所以我期望使用太多的子查询会让它变慢。
(FYI这是为WordPress的境外使用,无需通知我关于get_post_meta()函数)
相关:[为多个元值定制WordPress SQL查询]( http://kuttler.eu/code/custom-wordpress-sql-query-for-multiple-meta-values/) - 为每个元键使用单独的连接。如果我打算使用10个以上的密钥,似乎效率极低。我需要在这里最大化性能,因为这是一个ajax脚本。 –
它可能看起来效率低下,但它表现相当好 – Strawberry
哦,是吗?我不这么认为,也许如果我比较主键,但这都是字符串。我想我会用这个解决方案滚动,直到找到更好的解决方案(如果有更好的解决方案)。当我获得更多的数据时,我肯定会做一些速度测试。 –