我目前有一个查询,其中我从!= $this->player_id
的不同表格中选择* - >这很好。
看起来如下:
$sql = "
SELECT pi . * , p . *
FROM player_img pi, player p
WHERE pi.player_img_category_id = $this->category_id
AND pi.player_img_player_id = p.player_id
AND pi.player_img_player_id != $this->player_id";
我现在想做的事情有点不同:
$this->player_id
为了得到随机结果,我想我可以做类似的事情:
ORDER BY RAND() LIMIT 10
- 我如何确保包含我的特定行:
pi.player_img_player_id == $this->player_id
- 我不知道。
有什么建议吗?
修改 Allinone的回答做了我想做的事 - 作为奖金问题,我想知道是否有可能通过ASC p.player_firstname对他的例子进行排序?
答案 0 :(得分:1)
如何将UNION
与两个查询一起使用但条件不同
SELECT q.* FROM (
SELECT pi . * , p . *
FROM player_img pi, player p
WHERE pi.player_img_category_id = $this->category_id
AND pi.player_img_player_id = p.player_id
AND pi.player_img_player_id != $this->player_id
UNION ALL
SELECT pi . * , p . *
FROM player_img pi, player p
WHERE pi.player_img_category_id = $this->category_id
AND pi.player_img_player_id = p.player_id
AND pi.player_img_player_id = $this->player_id
) q ORDER BY RAND() LIMIT 10
答案 1 :(得分:1)
您可以使用FIND_IN_SET()或FIELD()函数。您的order by子句如下所示:
ORDER BY FIND_IN_SET(pi.player_img_player_id, '$this->player_id') desc, rand()