我正在尝试从MYSQL数据库中选择特定的数据行
数据库如下
Count id Startstation stp
1 A1234 Nottingham o
2 A1234 Nottingham p
3 B2345 Nottingham p
4 C6789 Leeds o
我想选择所有诺丁汉电台,但不要重复相同的ID。另外,一个st的o代码优先于p的stp。
所以我正在寻找如下输出:
A1234 Nottingham o
B2345 Nottingham p
以下是我一直试图使用的代码,但我无法让它工作
require('connect_db.php');
mysqli_select_db($mysql_link,"timetable");
$q="select * from (SELECT id,startstation, stp, ROW_NUMBER() OVER (PARTITION BY id ORDER BY stp DESC) rnk FROM railtest WHERE startstation="Nottingham") where rnk = 1";
$r=mysqli_query($mysql_link,$q);
if ($r)
{
while ($row=mysqli_fetch_array($r,MYSQLI_ASSOC))
{
echo $row['startstation'] . " " . $row['id']." ".$row['stp'];
echo "<br>";
}
}
else {echo '<p>'.mysqli_error($mysql_link).'</p>' ;}
mysqli_close($mysql_link);
我的select语句出现了Parse错误
希望有人可以提供帮助
由于
答案 0 :(得分:1)
SELECT `id`,`startstation`,min(`stp`) as stp
FROM `railtest`
WHERE `startstation`='Nottingham'
GROUP BY `id`, `startstation`
在两列相同且自o
到p
之前的列上,您可以选择min
值。显然当stp有两个值时会有效,你可以按优先级按字母顺序排列,或者使用相关的子查询来获取stp的值。
答案 1 :(得分:0)
SELECT `id`,`startstation`, `stp`
FROM `railtest`
WHERE `startstation`='Nottingham'
GROUP BY `id`
ORDER BY `stp` ASC