有没有办法只选择具有除前一个选定行之外的其他结果的行? 在我的一个表中,我存储广告数据,即每个广告一行。我还在另一个表中存储每个dag,周,月的租金价格,该表每个广告包含多个行。 我想从表2中选择其中一个价格(在表2中的示例行1和3中)与数据选择在同一查询中发生变化的行。我知道在这种情况下我必须使用GROUP_CONCAT来获取一行而不是两行结果,但是如何从表2中得到2个结果行,总共得到1个结果行?
查询的结果必须是:tre,234,“12345678911,12,45,325555678911,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
我试过
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
答案 0 :(得分: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;
我在SQL Fiddle上试过了。