Специальное предложение Select.Выбрать всю базу SKU на ее основной SKU - PullRequest
0 голосов
/ 25 апреля 2018

Каждый.У меня есть таблица 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

Спасибо

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018
select sku, quantity
  from data
       inner join (select sku from data where quantity > 20) data1
          on data.sku like data1.sku + '%'
0 голосов
/ 06 июня 2018

Я пытался использовать оператор 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, '%');

Выход

Output of above query

0 голосов
/ 25 апреля 2018

вы можете использовать ainner join с 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
...