gpt4 book ai didi

mysql - 使用行中的 substr 数据编写 sql

转载 作者:行者123 更新时间:2023-11-29 14:29:36 25 4
gpt4 key购买 nike

我在数据库中有一张名为data的表 table data

我想创建这个sql

     $sql = mysql_query("SELECT $menucompare,( substr($menucompare, 13, 2)) AS dayname FROM data WHERE ... ");

观察

    $menucompare // is variable which the date is selected from table(date or date2 or date3..) 

假设我们在 w_date 的第 6 周下的表 04/10/2012-(星期二) 中有这个日期,所以之后按照 sql 中的说法减去,它将是 Tu

第 7 周有 2 个日期,其中一个。我想要的是每周输出按天排序的日期名称

像这样的例子

  week 7

Tu
Fr
.
.

week 6
Tu
.
.

这会发生吗?这里有一个特殊的WHERE子句吗?是否可以编写sql来计算一周中有多少个日期例如第 7 周有多少个日期,上表中有 2 个在第 7 周

最佳答案

您在这里提出了几个不同的问题,但在我尝试直接解决这些问题之前,可能值得考虑(如果可能的话)将 date 列的数据类型更改为DATE输入,然后使用诸如 DATE_FORMAT(`date`, "%a") 之类的函数获取相关日期名称的第一个字符。

此外,在将其他语言的变量插入 SQL 语句时,请非常小心,避免恶意 SQL 注入(inject):考虑使用 prepared statements 。遗憾的是,在这种情况下这样做,您会因为数据库设计而遇到另一个问题:请参阅 this question了解更多信息。

关于你的问题:

  1. can this [the example output shown] happen?

    是的,可以。您想要对结果进行“分组”,因此请查看 SELECTGROUP BY 子句。陈述。尝试使用如下命令:

    SELECT
    `w_date`,
    GROUP_CONCAT(SUBSTR(`date`, 13, 2) SEPARATOR "\n") AS `daynames`
    FROM `data`
    WHERE ...
    GROUP BY `w_date`;

    如您所见,结果按照您想要的方式分组 - 但日期缩写列表是与周数分开的结果列;要精确地输出如图所示的数据,必须在应用程序级别进行进一步的操作。

  2. is it possible to write sql where claculating how many dates are in the week for exemple how many dates in week 7

    是的,绝对。要获取给定一周的记录总数:

    SELECT COUNT(*) FROM `data` WHERE `w_date` = 7;

    或者指定一周内不同天数:

    SELECT COUNT(DISTINCT `date`) FROM `data` WHERE `w_date` = 7;

    或者每周获得这样的信息:

    SELECT `w_date`, COUNT(*) FROM `data` GROUP BY `w_date`;

关于mysql - 使用行中的 substr 数据编写 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10271545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com