我有一个带有一些产品目录的表。桌子上有一个主店,说明所有产品的价格。例如,对于主要商店,IDShop是9999,一个产品可以是Red Card = 10美元,原始OriginIDProduct = 101。
IDShop=9999
Price=10
OriginIDProduct=101
其他商店包括不同的信息,如不同的描述或不同的价格等。
例如,假设这个数据:
IDShop=1
Price=12
OriginIDProduct=101
在同一张桌子上,请记住......
我需要从商店9999中选择产品,但如果存在商店1的产品,则不要返回商店9999的商品信息。
在本例中,SELECT返回记录
IDShop=1
Price=12
OriginIDProduct=101
有什么想法吗?
答案 0 :(得分:1)
这将显示每个产品,如果它存在,则显示商店1的价格,否则它将默认为9999商店。
SELECT IFNULL(t2.IDShop, t1.IDShop) AS IDShop,
IFNULL(t2.Price, t1.Price) AS Price,
IFNULL(t2.OriginIDProduct, t1.OriginIDProduct) AS OriginIDProduct
FROM table AS t1
LEFT JOIN table AS t2 ON t1.OriginIDProduct = t2.OriginIDProduct AND t2.IDShop = 1
WHERE t1.IDShop = 9999
答案 1 :(得分:0)
select
IDShop, Price, OriginIDProduct
from
table
where
IDShop <> 9999
or
(
IDShop = 9999
and not exists (select IDShop from table where IDShop <> 9999)
)
答案 2 :(得分:0)
最后在巴马的帮助下找到了解决方案,就是:
SELECT IFNULL(t2.IDShop, t1.IDShop) AS IDShop,
IFNULL(t2.Price, t1.Price) AS Price,
IFNULL(t2.OriginIDProduct, t1.OriginIDProduct) AS OriginIDProduct
FROM table AS t1
LEFT JOIN table AS t2 ON t1.OriginIDProduct = t2.OriginIDProduct AND t2.IDShop = 1
WHERE t1.IDShop = 9999
UNION ALL
SELECT IDShop, Price, OriginIDProduct FROM table WHERE IDShop=1 AND OriginIDProduct=0
感谢所有人。 此致,奥斯卡。