我需要有两个10,000个随机生成的值在1到10,000之间的数据集,并且只找到数据集之间常见的值。然后我需要将它们从最小到最大排序。我不能使用array_intersect()或array_unique()。
看起来我能够使用while循环来为两个MySQL表生成随机整数,并使用MySQL Query对它们进行比较和排序。我不完全确定我的结果是否准确,我正在寻找一种更有效的方法来完成这项任务。有人可以告诉我,如果我成功地完成了我的任务,可以用什么方法来解决这个问题。我需要知道我的Select Statement是否产生了正确的结果以及我如何改进它。
<?php
// CONNECT TO THE DATABASE
$DB_NAME = 'e3';
$DB_HOST = 'localhost';
$DB_USER = 'e3';
$DB_PASS = 'exercise3password';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$x = 0;
while($x <= 10000){
$randa = rand(1,10000);
$randb = rand(1,10000);
$query = "INSERT into a (num) VALUES ($randa)";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$query = "INSERT into b (num) VALUES ($randb)";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
$x++;
}
$query = "SELECT * FROM a INNER JOIN b on a.num=b.num WHERE a.num=b.num ORDER BY a.num";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
// GOING THROUGH THE DATA
if($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo stripslashes($row['num']);
echo "<br>";
}
}
else {
echo 'NO RESULTS';
}
// CLOSE CONNECTION
mysqli_close($mysqli);
?>
答案 0 :(得分:0)
您的WHERE子句仅重新确认先前在ON子句中指定的条件。因此,它是多余的。此外,为了提高效率,请删除“*”并改为命名您真正想要返回的每个列。除此之外,您的查询还可以。