SQL面试题更新 2026-08-05

请写出一个 SQL 查询语句,以获取在 2024 年 7 月 1 日当天访问过 '/product/123' 页面的用户的用户 ID 和对应的访问日期。

编码实现SQL

考察说明

考查候选人对基础 SQL 查询的编写能力,包括对 SELECT、WHERE 以及条件组合的掌握。

回答思路

  1. 【回答框架 1】该查询的基本结构是 SELECT 指定列,FROM 相关的表,WHERE 中设置过滤条件。
  2. 【回答框架 2】假设有一个访问记录表,通常包含字段如 user_id、page_url、visit_date 或 visit_datetime。如果表中没有明确区分日期和时间,需要根据存储格式进行处理。
  3. 【回答框架 3】对于日期条件,如果 visit_date 是 DATE 类型,直接使用 '2024-07-01' 进行比较;如果是 DATETIME 或 TIMESTAMP,可能需要使用 DATE(visit_date) 函数提取日期部分,或者使用 >= 和 < 范围条件,如 visit_datetime >= '2024-07-01 00:00:00' AND visit_datetime < '2024-07-02 00:00:00',以包含当天所有记录。
  4. 【回答框架 4】页面 URL 条件直接使用字符串比较,例如 page_url = '/product/123',注意 URL 可能包含大小写或多余参数,需根据实际数据结构选择合适的匹配方式。
  5. 【回答框架 5】最后,为了确保查询结果符合要求,可以包含 DISTINCT 或 GROUP BY,避免同一个用户在同一天有重复访问记录时出现重复行。
  6. 【关键点 1】SELECT user_id, visit_date FROM 访问记录表 WHERE visit_date = '2024-07-01' AND page_url = '/product/123';
  7. 【关键点 2】如果日期字段包含时间部分,应使用 DATE() 函数或范围条件过滤当天记录。
  8. 【关键点 3】为防止重复,可考虑使用 DISTINCT 或 GROUP BY。
  9. 【易错点 1】不能使用字符串模糊匹配如 page_url LIKE '%/product/123%',除非明确需要匹配带参数的情况,否则应使用等值比较确保精确匹配。
  10. 【易错点 2】如果日期字段是 DATETIME 类型,直接使用 visit_datetime = '2024-07-01' 将不会匹配任何记录,因为时间部分不为零,必须用函数或范围条件处理。