mysql查询多个where_mysql – sql查询与多个where语句

我有一个相当的,对我来说,复杂的mysql查询,我完全被卡住,找不到任何在线的答案。

这是我的查询:

SELECT

items.*

FROM

items

INNER JOIN

items_meta_data

WHERE

(

(meta_key = 'lat' AND meta_value >= '55')

OR

(meta_key = 'lat' AND meta_value <= '65')

)

AND

(

(meta_key = 'long' AND meta_value >= '20')

OR

(meta_key = 'long' AND meta_value <= '30')

)

GROUP BY

item_id

当然,我只用1个语句测试了这个查询,并且工作正常。所以如果我只通过长或者部分,那么我得到结果。只有当我尝试将它们拼接在一起时,才会得到不同的结果。

我在这里先向您的帮助表示感谢!

表结构如下:

表项目:

ID

项目名

商品描述

表元:

meta_id

ITEM_ID

meta_key

meta_value

对于有兴趣的人,我终于设法解决了这个问题。感谢大家的帮助和内部帮助。

SELECT

SQL_CALC_FOUND_ROWS items.*

FROM

items

INNER JOIN

items_meta ON (items.ID = items_meta.post_id)

INNER JOIN

items_meta AS m1 ON (items.ID = m1.post_id)

WHERE

1=1

AND

items.post_type = 'post'

AND

(items.post_status = 'publish')

AND

( (items_meta.meta_key = 'lat' AND CAST(items_meta.meta_value AS SIGNED) BETWEEN '55' AND '65')

AND

(m1.meta_key = 'long' AND CAST(m1.meta_value AS SIGNED) BETWEEN '20' AND '30') )

GROUP BY

items.ID

ORDER BY

items.date

DESC

你可能感兴趣的:(mysql查询多个where)