我有供应商表,其中有许多不同的供应商,但我想展示一个特定的供应商而不是另一个如果他们都在场。有没有办法在SELECT语句中比较结果?
有些事情:
SELECT
supplier,
price
FROM table
If IN supplier (Supplier1,Supplier2) Then
SELECT supplier
FROM table
WHERE supplier <> Supplier1
这在MySQL中是否可行,或者创建数据并以这种方式做得更好?
谢谢,
瑞克
编辑@Jim
目前我正在选择所有内容,结果如下:
Supplier Name | Supplier Price
Acme Company | $12
Acme Company (Northwest) | $12
Bobs Company | $13
Craigs Company | $15
Acme公司和Acme公司(西北航空公司)是同一家公司,所以如果它们都出现在结果中(有时候不会出现),那么首选的是显示Acme Companys的价格。
答案 0 :(得分:0)
如果您只想返回一行,那么您可以进行奇特的排序并选择第一个结果:
SELECT supplier, price
FROM table
WHERE supplier in (Supplier1, Supplier2)
ORDER BY (case when supplier = 'Supplier1' then 1
when supplier = 'Supplier2' then 2
end) DESC
LIMIT 1;
供应商的此查询订单,基于case
中的条件。由于desc
关键字,'Supplier2'
将是第一个,'Supplier1'
将是第二个。 limit
选择第一行'Supplier2'
(如果存在),否则'Supplier1'
。
编辑:
如果您只想消除一个供应商(如果存在另一个供应商),请执行以下操作:
select supplier, price
from table t
where not (supplier = 'Supplier1' and
exists (select 1 from table t2 where t2.supplier = 'Supplier2'
);
这将返回一个列表,其中包含一个供应商或另一个供应商,但不包含两者。
答案 1 :(得分:0)
您可以按供应商字段进行分组,如果供应商是子公司,则将其切换:
SELECT
IF(supplier = 'Acme Company (Northwest)', 'Acme Company',supplier),
price
FROM table
GROUP BY IF(supplier = 'Acme Company (Northwest)', 'Acme Company',supplier)
更好的长期解决方案是存储重复的公司。我可能有一个parent_supplier
字段。