所以我有一个问题我有一个用户表和一个网站表我需要从用户表中选择一个随机用户只是用户名是网站表中有一行有用户名。这可能吗?
所以我得到一个随机用户表
$stmt9 = $db->prepare('SELECT * FROM users WHERE coins >= ? ORDER BY RAND() LIMIT 1');
$stmt9->execute( array('1') ) ;
$row = $stmt9->fetch();
现在有些我需要抓住一个随机网站的所有者=那里有像这样的用户名
$stmt21 = $db->prepare('SELECT * FROM websites WHERE owner = ? ORDER BY RAND() LIMIT 1');
$stmt21->execute( array($row['username']) ) ;
$row21 = $stmt21->fetch();
我遇到的问题是它会抓住用户名,但如果用户没有提交网站,第二次选择将失败,所以我需要将这两个选择放在一起。并抓住一排网站表,如果有一行,用户表中的硬币超过1。
答案 0 :(得分:1)
你可以检查第一个查询是否返回一个空集,无论如何你想要一个查询,而你对用户名不感兴趣,你可以使用它:
SELECT
*
FROM
websites w
WHERE w.owner
IN (SELECT u.username FROM users u WHERE u.coins >= ?)
ORDER BY
RAND()
LIMIT
1
如果需要,可以限制子查询中选择的用户名,添加随机顺序和限制子句。