我有一个名为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
答案 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%'