mysql - 两个查询的 SQL 集成

标签 mysql sql python-3.x

以前,我将年龄存储为使用数据库中的 SQL 查询根据客户 DOB 计算得出的整数。然而,在意识到这是不好的做法之后,我尝试生成一个查询,根据用户出生日期计算年龄,并选择每个年龄组每月的订单数。但年龄并不是作为值存储在数据库中,而是计算出来的

我有一个查询,它就是这样做的,但假设年龄已经是数据库中计算的值,因此利用它:

    #Query1
    select COUNT(orderid) as OrderCount,
    DATE_FORMAT(orderDate, "%m-%Y") as month
    FROM customerOrders
    INNER JOIN customerDetails ON
    customerDetails.customerid=customerOrders.customerid
    WHERE customerDetails.age BETWEEN 17 AND 24
    group by month
    order by strftime("%Y", orderDate)

我有一个从客户数据库计算年龄的查询: #查询2

   SELECT YEAR(CURDATE()) - DOB - 1
   FROM customerDetails

伪代码实现:

    select COUNT(orderid) as OrderCount,
    DATE_FORMAT(orderDate, "%m-%Y") as month,
    age = (SELECT YEAR(CURDATE()) - DOB - 1 as age
    FROM customerOrders, customerDetails
    INNER JOIN customerDetails ON
    customerDetails.customerid=customerOrders.customerid

    WHERE 
    age BETWEEN 17 AND 24

    FROM customerDetails
    group by month
    order by strftime("%Y", orderDate

最佳答案

如果您想更新年龄,只需使用 updatetimestampdiff() 怎么样:

update customerDetails
    set age = timestampdiff(dob, curdate());

也就是说,将年龄存储在表中是一个非常糟糕的主意。它实际上每天都在变化。

关于mysql - 两个查询的 SQL 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59878250/

相关文章:

mysql - 在mysql中获取随机数组值

php - Symfony 2 编辑操作不填充表单字段

sql - T-SQL : Round to nearest 15 minute interval

c# - 将sql命令写入文本文件

sql - Oracle/PostgreSQL 中的序列在插入语句中没有 ID

python-3.x - 如何在 geopanda 中的两点之间应用一条线,例如2个城市之间

java - hibernate 时冗余数据多对一映射

mysql - 多表SQL查询(涉及外键)

python - 如何使用一个 Firefox 实例 Selenium WebDriver 和 Python 运行多个测试?

python-3.x - 如何优化此 python 代码以对大输入进行排序?