繁体   English   中英

无法构造没有子查询的mysql选择查询

[英]Cant construct mysql select query without subqueries

我有桌子

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的第一个引荐来源网址(日期为分钟)
  • 上次访问uri的IP
  • 独特的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`
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`

但是,这不允许order by tmp.date部分order by tmp.date 如果绝对需要,请在评论中让我知道,我将更新此代码以允许这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM