0

每个人。我有一个这样的 mySQL 表:

DATA(sku,quantity)
ABC           55
ABC_DE005     1
ABC_DE006     1
ABC_DE007     1
ABC_DE008     1
DEF           30
DEF_DE56      1
DEF_DE57      1
DEF_DE58      1
DEF_DE59      1
DEF_DE60      1
DEF_DE61      1
XYZ           0
XYZ_DE565     0
XYZ_DE566     0
XYZ_DE567     0
XYZ_DE568     0
XYZ_DE569     0

ABC是主SKU,ABC_DExx是子SKU,数量总是1或0。
我的问题是:
如何在主SKU的基础上选择所有数量超过20的Sku?或者如果主 SKU 的数量超过 20,则将选择主 SKU 及其子 SKU。
就像是

     "SELECT * From DATA Where quantity > 20 ..." 

下面是我想要的最终结果(主 SKU(例如:ABC)和它的子 SKU(例如:ABC_DExx)将显示,因为主 SKU ABC 超过 20):

DATA(sku,quantity)
ABC           55
ABC_DE005     1
ABC_DE006     1
ABC_DE007     1
ABC_DE008     1
DEF           30
DEF_DE56      1
DEF_DE57      1
DEF_DE58      1
DEF_DE59      1
DEF_DE60      1
DEF_DE61      1

谢谢

4

3 回答 3

0

您可以使用带有 like 和 union 的内部联接

select a.* 
from data a 
inner join data b on b. quantity  > 20  
    and a.sku like concat( b.sku , '%' )
union 
select * 
from data
where  quantity  > 20 
order by sku
于 2018-04-25T19:49:47.140 回答
0
select sku, quantity
  from data
       inner join (select sku from data where quantity > 20) data1
          on data.sku like data1.sku + '%'
于 2018-04-25T20:41:11.780 回答
0

我尝试使用 CONCAT 运算符;请找到以下代码。

演示

SELECT DATA.sku, DATA.quantity FROM DATA
INNER JOIN (SELECT * FROM DATA WHERE quantity > 20) DATA1 ON
DATA.sku = DATA1.sku OR DATA.sku LIKE CONCAT(DATA1.sku, '%');

输出

上述查询的输出

于 2018-06-06T08:53:39.590 回答