我想不出任何关于这个问题的术语,而是我给你想要展示的表格。
Table 1
ID | Product | Description
1 | Dell | Dell Laptop
Table 2
ID | ProductID | Attribute | Description
1 | 1 | Processor | i7
2 | 1 | USB 3.0 | USB 3.0 Descript
使用join我可以显示如下结果:
Product | Attribute | Description
Dell | Processor | i7
Dell | USB 3.0 | USB 3.0 Descript
我想要展示的是这样的。
Product | Attribute | Description
Dell | Processor | i7
| USB 3.0 | USB 3.0 Descript
如果表2的ProductID与上一行的上一个ProductID相同,则产品名称仅显示一次。我如何只使用SQL做到这一点?
答案 0 :(得分:0)
试试这个,它按照你的要求运作:
config: {
sampleRate: 16000 // or any other sampling rate
}
答案 1 :(得分:0)
与上面提到的@GordonLinoff一样,这应该在应用程序端完成,而不是使用SQL。以下是在MySQL中如何做到这一点:
SET @row_number := 0 ;
SET @productnames:='';
SELECT
CASE
WHEN num = 1
THEN t.Product
ELSE ''
END Product,
t.Attribute,
t.Description
FROM
(SELECT
@row_number:=CASE WHEN @productnames=t1.product
THEN @row_number+1
ELSE 1 END AS num,
@productnames:=t1.product AS product,
t2.Attribute,
t2.Description
from table1 t1
inner join table2 t2 on t1.ID = t2.ProductID
) t;
这里的技巧是分配一个假row_number,然后只使用Product
语句在row_number = 1时填充case when
列。希望这可以帮助!