使用INNER JOIN时,SQL返回相同记录的多个

时间:2018-05-01 13:56:10

标签: mysql sql arrays inner-join

我正在尝试运行以下SQL查询:

"SELECT Main.id, Main.created_min, Main.local_photo_name, Main.description, Main.creator, Main.title, Main.museum, technique.technique 
            FROM Main 
            INNER JOIN technique ON technique.kleding_id=Main.id 
            LIMIT 5"

我希望此查询将技术表中的数据添加到我从主表中获得的结果中。这有效,但是当我有多个与主表中相同id相关联的技术时,我希望将这些技术添加到主记录中。

这可以用SQL吗?
到目前为止这是:

[16] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => kant
    )

[17] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => satijn
    )

我想要一路上的东西:

[16] => Array
    (
        [id] => 47
        [created_min] => 1890
        [local_photo_name] => 
        [description] => Volgens kerkelijk gebruik werden baby's gedoopt in witte gewaden, als teken van onschuld en zuiverheid. Deze doopkleding kon men doorgaans meerdere malen gebruiken en overdragen op volgende generaties. In de 19de eeuw was het doopfeest een belangrijke gebeurtenis. Vele doopgewaden zijn dan ook gemaakt van kostbare materialen en rijkelijk gedecoreerd.
        [creator] => Anoniem
        [title] => Ecrukleurige doopmantel met cape in satijn en kant.
        [museum] => Modemuseum Hasselt
        [technique] => Array
            (
            [technique] => kant
            [technique] => satijn
            )
    )

表格如下:
请注意,这些表每个包含大约200,000条记录。所以速度是关键。 enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

使用带有id的group by尝试可能是有效的

答案 1 :(得分:0)

您可以这样做:

##Forecast data prep
tsfreq=5
x=pull(data,1)
train.x = ts(x[1:N], frequency=tsfreq)
test.x <- ts(c(rep(NA, N), x[(N+1):NROW(x)]), frequency=tsfreq)


stmodels=c("meanf","naive","snaive","rwf","croston","stlf","ses","holt","hw"##,"splinef"
           ,"thetaf","ets","auto.arima","tbats")

for (i in 1:length(stmodels)){
str1=paste0("m_",stmodels[i]," = ",stmodels[i],"(train.x)")
str2=paste0("f_",stmodels[i]," = forecast(m_",stmodels[i],", h=NROW(x)-N)")
str3=paste0("plot(f_",stmodels[i],")")
str4="lines(test.x)"
str5=paste0('acc[["',stmodels[i],'"]]=accuracy(f_',stmodels[i],',test.x)')
str=paste0(str1,";",str2,";",str3,";",str4,";",str5)
eval(parse(text=str))
}

这将返回一个JSON数组技术。这是JSON_ARRAYAGG

的文档