我有一个包含产品UPC编号和供应商ID编号的数据库。多个供应商可能会提供相同的产品,因此对UPC的简单查询可以(并且经常)返回多行。但是,有一个供应商偏好列表(因为供应商以不同的价格出售相同的产品),我的目标是从最喜欢的供应商处返回产品条目。简而言之,给定五个供应商,编号从1到5,首选供应商列表可以是$ vendors = array(5,3,1,2,4);。不同的用户具有不同的首选项列表。因此,现在,我正在创建首选的供应商列表,循环查询多达五次(实际上是83次),并停止查询第一次返回行。非常慢是否有一个MySQL命令可以接受(按其排序)列值的任意列表,并使用“ LIMIT 1”仅返回第一个找到的值?
SELECT * FROM products WHERE upc='123456789123' AND vendor='5';
SELECT * FROM products WHERE upc='123456789123' AND vendor='3';
从理论上讲就像...
SELECT * FROM products WHERE upc='12345678123' AND vendor=('5', '3') LIMIT 1;
最佳答案
尝试这个
SELECT TOP 1 * FROM products WHERE upc='12345678123' AND vendor in ('5', '3')
Order BY
CASE WHEN Vendor = '5' THEN '1'
WHEN Vendor = '3' THEN '2'
ELSE Vendor END ASC