-- 数据不大的情况,直接用or查询解决问题 or不走索引
SELECT bs.* from 比赛记录 bs INNER join (
-- 根据玩家获取团队id去重
SELECT DISTINCT(
t.id) id from 团队 t INNER join (
-- 找出玩家与玩家好友的玩家id
SELECT DISTINCT (
a.id) id from 玩家 a left join 好友 b on a.`微博ID` = b.`好友微博ID`
where b.玩家id = 1 or
a.id =1
) wj on t.玩家id =
wj.id) t on bs.赢家ID =
t.id or bs.输家ID=
t.idORDER BY
bs.id desc;
-- ———————————— 使用 UNION合并来 优化 or 查询————————————————————
SELECT * from (
-- 获取赢了的比赛
SELECT bs.* from 比赛记录 bs INNER join (
-- 根据玩家获取团队id去重
SELECT DISTINCT(
t.id) id from 团队 t INNER join (
-- 获取所有好友的id,UNION上这个玩家的id
SELECT
a.id from 玩家 a where exists(select 1 from 好友 b where b.玩家id= 1 and a.`微博ID` = b.`好友微博ID`)
UNION select 1
) wj on t.玩家id =
wj.id ) t on bs.赢家ID =
t.id UNION
-- 输了的比赛
SELECT bs.* from 比赛记录 bs INNER join (
-- 根据玩家获取团队id去重
SELECT DISTINCT(
t.id) id from 团队 t INNER join (
-- 获取所有好友的id,UNION上这个玩家的id
SELECT
a.id from 玩家 a where exists(select 1 from 好友 b where b.玩家id= 1 and a.`微博ID` = b.`好友微博ID`) UNION select 1
) wj on t.玩家id =
wj.id ) t on bs.输家ID =
t.id) 比赛记录 order by id desc
不弄了碎觉去了。。。