好,因此我的数据库中包含多个广告...但是,我已经添加了来自同一网站的多个广告。...这是一个示例。
如您所见...数据库具有两个不同的链接...但是它们指向相同的站点。我的目标是让它随机选择其中一个并显示它,而不显示另一个,同时还选择所有其他并显示它们。这是我目前使用的编码:
<?php
$query = 'SELECT * FROM `ads`';
$results = mysqli_query($connect, $query) or die(mysql_error());
while ($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
extract($row);
echo '
<div class="col-sm-6">
<div class="card mb-30"><a class="card-img-tiles" href="'.$link.'">
<div class="inner">
<div class="main-img"><img src="'.$image.'" alt="'.$alt_title.'"></div>
</div></a>
<div class="card-body text-center">
<h4 class="card-title">'.$name.'</h4>
'.$about.'
<a class="btn btn-outline-primary btn-sm" href="'.$link.'">Check It Out</a>
</div>
</div>
</div>
';
}
?>
我希望它显示随机选择的带圆圈的圆圈,而不是每组都显示。
答案 0 :(得分:1)
从MySQL 8.0版(或MariaDB 10.2)开始,您可以使用@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// ...
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MyActivity.super.onBackPressed();
}
});
builder.setNegativeButton("Cancel", null);
builder.show();
}
在具有相同mainsite
的每组记录中选择一个随机记录,然后使用以下命令在外部查询中进行随机排序ROW_NUMBER()
ORDER BY RAND()
在MySQL / MariaDB的早期版本中,这变得很乏味。一种解决方案是使用一对变量来跟踪组并分配行号:
SELECT * FROM (
SELECT
t.*,
ROW_NUMBER() OVER(PARTITION BY mainsite ORDER BY RAND()) rn
FROM ads t
) x WHERE rn = 1
ORDER BY RAND()