sql:加入一些列

时间:2019-07-04 09:25:54

标签: sql

我有一个名为mainTable的表,该表带有一个名为“ variantID”的(字符串)列。现在有一些列(颜色,长度,宽度)取决于此variantID,这意味着,如果两行具有相同的variantID,则它们在这些列中的值也相同。

我还有另一个表,名为主键为id的变量。这些ID是mainTable的variantID。

现在我想要一个结果,其中每个变量的行都包含一行,其中id包含一个特定的字符串,包含表变量的所有列和上述列,理想情况下是mainTable中具有相同值的行数的一列列“颜色” 我可以使用联接,分组和计数吗?

示例:

主表:

id | variantID | year | color | length | width
----------------------------------------------
0  | 14512374  | 2014 | black | 45     | 50
0  | 14512374  | 2015 | black | 45     | 50
0  | 98512351  | 2010 | green | 60     | 75
0  | 45687128  | 2010 | green | 60     | 75

变体:

id       | isFavorite | note
---------------------------------
14512374 | yes        | 
98512351 | no         | old
45687128 | no         | test

所需的输出(对于'%123%'这样的variantId):

id       | isFavorite | note | color | length | width | count
---------------------------------
14512374 | yes        |      | black | 45     | 50    | 2
98512351 | no         | old  | green | 60     | 75    | 2

1 个答案:

答案 0 :(得分:0)

您只需要这样做:

SELECT T2.id, T2.isFavorite , T2.note, min(T1.color) , min(T1.lenght), min(T1.width), 
(select count(maintable.id) FROM maintable WHERE maintable.variantID like '%123%')  FROM variants AS T2
INNER JOIN maintable ON T1.variantID = T2.ID
WHERE T1.ID like '%123%'