我有以下MySQL查询,meta_key
等于_cnote_module_number
而post_id
等于$mod_id
。
但是现在我如何在post_id = '$mod_id'
查看结果并找到meta_value
(这是一个数字)之后添加到该查询,而不是回顾{{1} }等于meta_key
并从第一个结果中获取大于_cnote_module_number
的{{1}}。
meta_value
修改
我有2个表,第一个是postmeta,有..
meta_value
第二个是usermeta with ..
$query = ( "SELECT * FROM postmeta WHERE meta_key = '_cnote_module_number' AND post_id = '$mod_id'" );
我想确保-------------------------------------
post_id | meta_key | meta_value
-------------------------------------
10 | jason | 1
49 | cnote | 3
56 | cnote | 2
97 | cnote | 7
和-----------
mod_id
-----------
10
49
67
等于postmeta.meta_key = 'cnote'
。比任何ID相同,我想获得usermeta.mod_id
,然后找到大于该值的第一个数字。
在这个例子中,我希望结果是postmeta的第4行
答案 0 :(得分:1)
你可以通过给它两个不同的名字来JOIN
一个表。例如,以下内容将返回所有元数据,其中B
表的meta_value大于A
表的meta_value:
SELECT B.meta_value
FROM postmeta A
JOIN postmeta B
ON ( B.meta_value > A.meta_value
AND A.meta_key = B.meta_key)
WHERE A.meta_key = 'cnote'
AND A.post_id = '$mod_id'
但是针对您的具体问题,我们需要 next meta_value。那更容易;因为您只想返回一行,所以可以从上面获取meta_values的MIN:
SELECT MIN(B.meta_value)
FROM postmeta A
JOIN postmeta B
ON ( B.meta_value > A.meta_value
AND A.meta_key = B.meta_key)
WHERE A.meta_key = 'cnote'
AND A.post_id = '$mod_id'
如果你想获得一个返回所有对meta_values的查询,其中A.meta_value紧接在B.meta_value之前,我们也可以这样做;让我知道。