私はデータベースにテーブルを持っています(これはTestと呼ばれます)。テーブルの名前はItemsで、itemIDという名前のカラムとcurrentlyという名前の10進(8,2)カラムがあります。それらは、項目の一意のIDおよび項目の現在の入札価格をそれぞれ表します。アイテムにまだ入札されていない可能性があるため、現在の列はNULLにすることができます。mysql:テーブルエイリアスが存在しません
私の目標は、少なくとも1回の入札が行われた現在の最高入札価格のアイテムのitemIDを取得することです。私は次のようになりますmysqlのクエリを持っている:
select itemID
from (select itemID from Items where numBids > 0) as b
where currently = (select max(currently) from b);
私は、MySQLでこれを実行すると、私が言うエラーが出る:
ERROR 1146 (42S02): Table 'Test.b' doesn't exist
誰もがここで何が起こっているか説明できますか?私はしばらくの間、mysqlを使用していないので、私は錆びています。このようなことを成し遂げるためには、アイテムとの結合が必要ですか?どんな助けもありがとう。
ああ、ありがとうございました。これは私のクエリの構造の完全な再考を必要としますか? –
項目bからb.numBids> 0およびb.currently =を選択してみてください(a.itemID = b.itemIDおよびa.numBids> 0の項目aからmax(a.currently)を選択します)。 – carpii
carpii:ありがとうございますが、そのクエリの実行には時間がかかりすぎます(少なくとも私のマシンでは)。 –