1

MYSQL データベースから特定のデータ行を選択しようとしています

データベースは以下の通り

Count   id     Startstation      stp
1      A1234   Nottingham         o
2      A1234   Nottingham         p
3      B2345   Nottingham         p
4      C6789   Leeds              o

すべてのノッティンガム駅を選択したいのですが、同じ ID を繰り返さないでください。また、o の stp コードは、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 ステートメントで解析エラーが発生します

誰かが助けてくれることを願っています

ありがとう

4

2 に答える 2

1
SELECT `id`,`startstation`,min(`stp`) as stp
FROM `railtest`
WHERE `startstation`='Nottingham'
GROUP BY `id`, `startstation`

値を選択oする前に、同じである 2 つの列をグループ化します。明らかに、これは stp の値が 2 つ以上ある場合に機能し、それらを優先順位に従ってアルファベット順に配置するか、相関サブクエリを使用して stp の値を取得できます。pmin

于 2013-09-13T21:41:45.090 に答える