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
可以用来区分数据来自联盟的哪个部分,是来自上选择还是下选择谢谢你的启发性回答