Php 如何在同一SQL查询中容纳多个HAVING子句
我一直很难让我的查询工作,并希望得到帮助。在较高的层次上,我尝试查询一个用户表,并根据一组条件+加上用户在指定的英里半径内这一事实返回结果,或者返回具有相同指定条件的用户的结果,而忽略英里半径要求 我上面提到的“特定标准”是Php 如何在同一SQL查询中容纳多个HAVING子句,php,mysql,Php,Mysql,我一直很难让我的查询工作,并希望得到帮助。在较高的层次上,我尝试查询一个用户表,并根据一组条件+加上用户在指定的英里半径内这一事实返回结果,或者返回具有相同指定条件的用户的结果,而忽略英里半径要求 我上面提到的“特定标准”是 u.activated = 1 AND u.type LIKE ('%red%') 这是我的问题,我知道这不是我想要的方式 SELECT u.online, u.total_spend, u.name, u.address, u.city, u.state, u.zip,
u.activated = 1 AND u.type LIKE ('%red%')
这是我的问题,我知道这不是我想要的方式
SELECT u.online, u.total_spend, u.name, u.address, u.city, u.state, u.zip, u.type,
u.activated, ( 3959 * ACOS( COS( RADIANS( 42.459080 ) ) * COS( RADIANS( u.lat ) ) * COS( RADIANS( u.lng ) - RADIANS( - 83.934013 ) ) + SIN( RADIANS( 42.459080 ) ) * SIN( RADIANS( u.lat ) ) ) ) AS distance,
t.username, COUNT( t.active ) AS reviews
FROM testimonials AS t
RIGHT JOIN users AS u ON ( t.username = u.username )
WHERE u.activated =1
AND u.type LIKE (
'%red%'
)
AND (
u.online =1
OR u.online =0
)
GROUP BY IFNULL( t.username, UUID( ) )
HAVING distance < '15'
ORDER BY total_spend DESC
LIMIT 0 , 30
选择u.online、u.total\u Expense、u.name、u.address、u.city、u.state、u.zip、u.type、,
u、 激活,(3959*ACOS(弧度(42.459080))*COS(弧度(u.lat))*COS(弧度(u.lng)-弧度(-83.934013))+SIN(弧度(42.459080))*SIN(弧度(u.lat)))作为距离,
t、 用户名,计数(t.active)为评论
来自作为t的推荐书
以u-ON的身份右键加入用户(t.username=u.username)
其中,u.activated=1
和u型一样(
“%red%”
)
及(
u、 在线=1
或u.online=0
)
按IFNULL(t.username,UUID())分组
距离小于“15”的
按总花费说明排序的订单
限制0,30
我意识到让操作员处理已经提取的数据,这就是问题所在。我不明白的是,如何在忽略距离要求的情况下提取数据,而是在u.online=1的情况下提取用户,并将他们全部包含在同一个数据集中
提前感谢您的帮助 因为距离是经过计算的,所以您可以将原始查询包装在cte中,然后您可以使用where子句仅在u.online=1或距离<15时提取记录吗?通常,两个独立的
使用联合选择s,但您也可以在HAVING
子句中使用或。谢谢Marcus。我最终通过一个工会解决了这个问题,它似乎工作得很好。感谢你们两位的建议