不能在没有子查询的情况下构造mysql select查询
我有一张桌子不能在没有子查询的情况下构造mysql select查询,mysql,Mysql,我有一张桌子 CREATE TABLE logs( id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, ip INT(11) UNSIGNED NOT NULL, `date` TIMESTAMP, `time` INT(11) UNSIGNED NOT NULL, referrer VARCHAR(255) NOT NULL, uri VARCHAR(255) NOT NULL, PRIMARY KEY (id), ) 我需要
CREATE TABLE logs(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
ip INT(11) UNSIGNED NOT NULL,
`date` TIMESTAMP,
`time` INT(11) UNSIGNED NOT NULL,
referrer VARCHAR(255) NOT NULL,
uri VARCHAR(255) NOT NULL,
PRIMARY KEY (id),
)
我需要获取以下数据并按IP分组:
- 知识产权
- IP的第一个推荐人(日期为min.)
- 上次访问IP的uri
- 唯一URI的数量
SELECT
`logs`.`ip`,
(SELECT
`tmp`.`referrer`
FROM
`logs` AS `tmp`
WHERE
`tmp`.`ip` = `logs`.`ip`
ORDER BY `tmp`.`date`
LIMIT 1) 'referrer',
(SELECT
`tmp`.`uri`
FROM
`logs` AS `tmp`
WHERE
`tmp`.`ip` = `logs`.`ip`
ORDER BY
`tmp`.`date` DESC
LIMIT 1) 'uri',
COUNT(DISTINCT (`logs`.`uri`)) 'urls'
FROM
`logs`
GROUP BY
`logs`.`ip`
但是,这不允许按tmp.date下单。如果绝对需要,请在注释中告诉我,我将更新此代码以允许这样做
select
`logs`.`ip`,
`tmp`.`referrer`
`tmp`.`uri`
count(distinct `logs`.`uri`)) as `urls`
from `logs`
left join `tmp` on `tmp`.`ip`=`logs`.`ip`
group by `logs`.`ip`