php - 如何同时使用 DISTINCT 行和非 DISTINCT 行
问题描述
全部!今天我有一个棘手的问题,我想使用 select DISTINCT 语句来选择需要不同的行,但也在同一语句中(或者我尝试过的方式?) 't/can't 是不同的。我想要的结果是每个类名中只有一个。目前它的输出如下:
English: textbook, folder, laptop
English: textbook
Media: textbook, folder
English: textbook, folder
English: textbook, folder
Art: textbook
这就是我希望它输出的方式:
English: textbook, folder, laptop
Media: textbook, folder
Art: textbook
这是数据库的布局:
|ID|classname|Book
|49|English |textbook, folder, laptop
|50|English |textbook
|53|Media |textbook, folder
|54|English |textbook, folder
|55|Art |folder
我显然对 php 很陌生,所以任何帮助都将不胜感激!
到目前为止,这是我的方法:
$sql = "SELECT DISTINCT classname FROM classes ORDER BY Due;";
$result1 = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result1);
if ($resultCheck > 0){
while ($row = mysqli_fetch_assoc($result1)){
$classname = $row["classname"];
if ($classname == "English"){
$newName = $classname;
$sql = "SELECT Book FROM classes WHERE Book='$newName';";
$result1 = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result1);
if ($resultCheck > 0){
while ($row = mysqli_fetch_assoc($result1)){
$materials = $row["Book"];
echo "<div class='subname'>$newName:";
echo "<div class='wow'>$materials</div>";
echo "</div><br>";
}
}
}
}
}
解决方案
好吧,鉴于数据库的糟糕设计,您需要做的第一步是逐项列出您的列表,例如“教科书、文件夹、笔记本电脑”[这样您就可以得到三行一个项目,而不是一行三个项目]。该操作的语义有点像 SQL UNNEST,但遗憾的是,数据库的“结构”(只要使用该词适合您所拥有的)不适合使用它。我不确定如果没有某种形式的程序编码就可以完成,所以最有可能正确的答案是“忘记在一个 SQL 语句中这样做”。
您所谓的 DISTINCT只能在 itemization 之后应用到[您获得的结果] 。
应用 DISTINCT 后,您需要重新分组。也许它可以用客户端语言来完成,但这不是我喜欢的。
推荐阅读
- r - R - 计算每行的重复值
- php - 如何更新布尔类型列 - Laravel 5.5
- python - pandas:使用 .loc 和 MultiIndex 进行条件选择
- python - Python Kivy 错误:[CRITICAL] [App] 无法获取窗口,中止
- c++ - 通过宏将函数参数传递给函数
- react-native - 在标题顶部显示自定义弹出警报覆盖 - React Navigation
- tensorflow - 如何在不同的 Tensorflow 设备上使用相同的 PRNG?
- ios - 旋转视图和子视图
- android-instant-apps - 安装的 APK 大小可以超过 4 MB 吗?
- php - 如何使用重复的类 xpath 访问嵌套元素