Mysql查询仅在GROUP_CONCAT中选择具有唯一结果的行

Jil*_*aar 5 mysql sql group-concat

有没有办法只选择具有除前一个选定行之外的其他结果的行?在我的一个表中,我存储广告数据,即每个广告一行.我还在另一个表中存储每个dag,周,月的租金价格,该表每个广告包含多个行.我想从表2中选择其中一个价格(在表2中的示例行1和3中)与数据选择在同一查询中发生变化的行.我知道在这种情况下我必须使用GROUP_CONCAT来获取一行而不是2行结果,但是如何从表2获得2个结果行,总共得到1个结果行?

查询的结果必须类似于:tre,234,"12345678911,12,45,32555676711,12,67"

Table 1 (advertisements)
ID_adv      data1       data2   
1       tre     234
2       ghj     34
3       jk      098 
4       jfjk        12

Table 2 (dates)
ID_dates    ID_adv      timestamp_day   price1      price2
1       1       12345678911     12      45
2       1       22345677771     12      45
3       1       32555678911     12      67
4       2       42345671231     34      34
Run Code Online (Sandbox Code Playgroud)

我试过了

SELECT 
t1.*, 
GROUP_CONCAT(t2.date) AS dates 
FROM Table1 t1 
LEFT JOIN Table2 t2 ON t2.ID_adv = t1.ID_adv 
WHERE t1.ID_adv = 3 GROUP BY t1.ID_adv
Run Code Online (Sandbox Code Playgroud)

Kae*_*aeL 2

你能试试这个吗:

SELECT T3.ID_adv
    , T3.data1
    , T3.data2
    , CAST(GROUP_CONCAT(CONCAT(T3.timestamp_day, ',', T3.price1, ',', T3.price2)) AS CHAR) AS DatePrice
    FROM (
        SELECT T1.*
            , MIN(T2.timestamp_day) AS timestamp_day
            , T2.price1
            , T2.price2
            FROM Table1 T1
            LEFT JOIN Table2 T2 ON T2.ID_adv = T1.ID_adv
            GROUP BY T1.ID_adv, T2.price1, T2.price2
    ) T3
    GROUP BY T3.ID_adv;
Run Code Online (Sandbox Code Playgroud)

我在SQL Fiddle上尝试过。