Mysql 是否可以连接到查询,但在第二个查询之前获取第一个查询的结果?
我想根据用户的兴趣和国家/地区从数据库中选择用户,然后我只想根据兴趣选择他们Mysql 是否可以连接到查询,但在第二个查询之前获取第一个查询的结果?,mysql,sql,Mysql,Sql,我想根据用户的兴趣和国家/地区从数据库中选择用户,然后我只想根据兴趣选择他们 SELECT users.* FROM users JOIN user_opt ON users.id = user_opt.UserId WHERE user_opt.country IN(".implode(',',$Countries).") AND user_opt.Hobbies REGEXP '".implode('|',$Interests)."' LIMIT 100 SELECT users
SELECT users.*
FROM users
JOIN user_opt ON users.id = user_opt.UserId
WHERE user_opt.country IN(".implode(',',$Countries).") AND user_opt.Hobbies REGEXP '".implode('|',$Interests)."' LIMIT 100
SELECT users.*
FROM users
JOIN user_opt ON users.id = user_opt.UserId WHERE user_opt.country IN(".implode(',',$Countries).") LIMIT 100
现在,我想将它们合并到一个查询中,但在第二个查询之前先得到第一个查询的结果。一个可能的解决方案是
select * from
(select 1 AS sn, users.*
...
union
select 2 AS sn, users.*
...)
order by sn;
如果要确保第一个结果先于第二个结果,请使用
union all
和order by
:
(SELECT u.* , 1 as which
FROM users u JOIN
user_opt uo
ON u.id = uo.UserId
WHERE u.country IN (".implode(',',$Countries).") AND
uo.Hobbies REGEXP '".implode('|',$Interests)."'
LIMIT 100
) UNION ALL
(SELECT u.*, 2 as which
FROM users u JOIN
user_opt uo
ON u.id = uo.UserId
WHERE uo.country IN(".implode(',',$Countries).")
LIMIT 100
)
ORDER BY which;
什么是sn我亲爱的朋友?@sakoaskoaso
sn
可以用来区分数据来自联盟的哪个部分,是来自上选择还是下选择谢谢你的启发性回答