0
我正在使用以下查询来获取与LIKE匹配的最低价格的行。SQL:加入LIKE和min()
Suppliers
id | name
----------------------------------------
1 | sup1
2 | sup2
Prices
id | article_number | price | supplier_id
------------------------------------------------
1 | 12345678 | 312 | 1
2 | 12345678 | 219 | 2
3 | 87654321 | 312 | 1
select prices.* from prices
inner join
(
select min(price) as price,
article_number as article_number from prices group by article_number
)
min_prices on prices.price = min_prices.price
and prices.article_number = min_prices.article_number
WHERE prices.article_number LIKE '".$q."%'
虽然现在还希望获取来自供应商表的suppliers.name:
select prices.*, suppliers.name from prices, suppliers
inner join
(
select min(price) as price,
prices.article_number as article_number from prices group by prices.article_number
)
min_prices on price = min_prices.price
and article_number = min_prices.article_number
WHERE
prices.article_number LIKE '".$q."%' AND
prices.supplier_id = suppliers.id"
这将返回行的18倍量的它应该是...?
此外,该表由10多百万行组成,因此效率非常重要。
对于每个相关表格,从'show create table tablexyz'输出。尝试获得一些合成索引,谁知道,即使是覆盖索引。当然,从'explain'输出。根据'article_number'的宽度,'(price,article_number)'上的组合可能会很甜 – Drew