greatest-n-per-group的问题,我的MySQL版本不能使用LIMIT & IN (错误1235),所以我需要使用这种查询(请看这里的答案:answer )
SELECT
t1.idMemberCard,
DATE(MIN(transactions.dateTransaction)) AS first_transaction,
DATE(MAX(transactions.dateTransaction)) AS last_transaction,
t2.*
FROM membersCard AS t1
INNER JOIN transactions ON transactions.idMemberCard = t1.idMemberCard
INNER JOIN
(
SELECT
membersCard.idMemberCard,
membersCard.cardNumber,
membersCard.firstNameMemberCard,
membersCard.lastNameMemberCard,
transactions.dateTransaction
FROM membersCard
INNER JOIN transactions ON transactions.idMemberCard = membersCard.idMemberCard
WHERE membersCard.sexMemberCard = 'M'
AND membersCard.cardNumber = '1100101308655'
AND
DATE(transactions.dateTransaction) BETWEEN ('2013-12-28') AND ('2014-08-13')
LIMIT 100
) AS t2
ON t1.idMemberCard = t2.idMemberCard为精确匹配(卡号)而执行的子查询(t2表)恰好返回5行(在本例中):全部完美。
我的问题/请求:
将这两个表连接起来,我将获得5行,而不只是1行,不同的5行包含日期。
发布于 2014-10-08 20:12:08
您的join工作正常。问题出在你的select语句上:
SELECT t1.idMemberCard,
DATE(MIN(transactions.dateTransaction)) AS first_transaction,
DATE(MAX(transactions.dateTransaction)) AS last_transaction,
t2.*使用MIN()和MAX()将其转换为只返回一行的聚合查询。试试这个:
SELECT t1.idMemberCard,
DATE(transactions.dateTransaction) AS first_transaction,
DATE(transactions.dateTransaction) AS last_transaction,
t2.*如果需要,也可以添加group by子句。
https://stackoverflow.com/questions/26256484
复制相似问题