小编Qua*_*noi的帖子

将数据时间字段与MySQL中的当前日期时间进行比较

我有类似的东西:

to_days(now()) < to_days(birth)
Run Code Online (Sandbox Code Playgroud)

它可以工作,但我不是比较时间来比较时间.有类似的功能吗?

mysql sql

5
推荐指数
1
解决办法
5296
查看次数

GROUP_CONCAT更改GROUP BY顺序

我有一个VIEW(很多连接)输出按日期ASC排序的数据.按预期工作.

输出类似于:

ID date         tag1   other_data
1  25-03-2011   blue   fff   <=
1  26-03-2011   red    ggg
1  27-03-2011   pink   yyy
2  25-03-2011   red    yyy   <=
2  26-03-2011   orange rrr
Run Code Online (Sandbox Code Playgroud)

如果我申请GROUP BY ID.对于其他列,MySQL输出每个ID的第一个找到的行.我在te docs的某个地方读到了这个.

SELECT * FROM `myVIEW`  
GROUP BY `ID`  
  ID date         tag1  other_data  
  1  25-03-2011   blue   fff   <=
  2  25-03-2011   red    yyy   <=
Run Code Online (Sandbox Code Playgroud)

现在让我们添加一个GROUP_CONCAT(tags1)

SELECT *,CONCAT_GROUP(`tag1`) AS `tags`  
FROM `myVIEW`  
GROUP BY `ID`
Run Code Online (Sandbox Code Playgroud)

由于我应用CONCAT_GROUP,结果变得奇怪.我在期待:

ID date         tag1   other_data   tags
1  25-03-2011   blue   fff          blue,red,pink
2 …
Run Code Online (Sandbox Code Playgroud)

mysql group-concat

5
推荐指数
3
解决办法
3133
查看次数

SQL案例声明增值

尝试创建一个计算列,该列的值将基于其他四列中的值.第1列,第2列,第3列,第4列可以是"是"或"否"计算列中的最终结果,比如称为"进度",应该是这一行:

Progress = CASE
WHEN [Column1] = 'Yes' THEN Value+1
WHEN [Column2] = 'Yes' THEN Value+1
WHEN [Column3] = 'Yes' THEN Value+1
WHEN [Column4] = 'Yes' THEN Value+1
ELSE 0 END
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的,因为上面的语法显然不正确.

sql sql-server sql-server-2008

5
推荐指数
1
解决办法
6289
查看次数

MySQL用于获取每月每天的日期行数

我有一个表,其中包含社区事件列表,其中包含事件开始和结束日期的列.如果结束日期为0,则事件仅在开始日发生.我有一个查询,返回任何给定日期发生的事件数:

SELECT COUNT(*) FROM p_community e WHERE 
    (TO_DAYS(e.date_ends)=0 AND DATE(e.date_starts)=DATE('2009-05-13')) OR
    (DATE('2009-05-13')>=DATE(e.date_starts) AND DATE('2009-05-13')<=DATE(e.date_ends))
Run Code Online (Sandbox Code Playgroud)

我想在"2009-05-13"中测试任何日期.

我需要能够在一个月内每天获取这些数据.我可以一次只针对每一天运行查询,但我宁愿运行一个可以一次给我整个月的查询.有没有人对我如何做到这一点有任何建议?

不,我不能使用存储过程.

mysql sql

4
推荐指数
2
解决办法
8412
查看次数

MySQL - 如何通过值将子查询用于IN语句

问题是获取表列数据并将其用作IN函数的值列表;

在这个例子中,我创建了2个表:电影和流派

表"电影"包含3列:id,name和流派.表"genres"包含2列:id和name.

+- movies-+
|         |- movie_id - int(11) - AUTO_INCREMENT - PRIMARY
|         |- movie_name - varchar(255)
|         |- movie_genres - varchar(255)
|
|         
+- genres-+
          |- genre_id - int(11) - AUTO_INCREMENT - PRIMARY
          |- genre_name - varchar(255)
Run Code Online (Sandbox Code Playgroud)

两个表都包含一些虚拟数据:

+----------+------------+--------------+
| movie_id | movie_name | movie_genres |
+----------+------------+--------------+
|        1 | MOVIE 1    | 2,3,1        |
|        2 | MOVIE 2    | 2,4          |
|        3 | MOVIE 3    | 1,3          |
|        4 | MOVIE 4    | …
Run Code Online (Sandbox Code Playgroud)

mysql sql csv group-concat

4
推荐指数
1
解决办法
1798
查看次数

SQL筛选同一列中的多个项目

我在SQL中有两个表,一个有项目,另一个有项目所属的类,即JOIN看起来大致如下:

Project | Category
--------+---------
  Foo   | Apple
  Foo   | Banana
  Foo   | Carrot
  Bar   | Apple
  Bar   | Carrot
  Qux   | Apple
  Qux   | Banana
Run Code Online (Sandbox Code Playgroud)

(显然,字符串替换为更高正常形式的ID,但你明白了这一点.)

我想要做的是允许过滤,以便用户可以选择任意数量的类别,结果将被过滤到属于所有选定类别的成员的项目.例如,如果用户选择类别"Apple"和"Banana",则显示项目"Foo"和"Qux".如果用户选择类别"Apple","Banana"和"Carrot",则只显示"Foo"项目.

我尝试的第一件事是一个简单的SELECT DISTINCT项目FROM ... WHERE Category ='Apple'和Category ='Banana',但当然这不起作用,因为Apple和Banana在两个不同的行中显示在同一列中对于任何共同的项目.

GROUP BY和HAVING对我没有任何好处,所以告诉我:有没有一种明显的方法可以做到这一点,我错过了,或者它是否真的如此复杂以至于我不得不求助于递归连接?

顺便说一句,这是在PostgreSQL中,但当然,标准SQL代码在可能的情况下总是更好.

sql postgresql filter

4
推荐指数
1
解决办法
1万
查看次数

SQL条件GROUP BY:怎么做?

假设我有以下SQL查询:

SELECT Meeting.id AS meetingId, Bill.id AS billId
FROM Meeting 
LEFT JOIN Bill ON Meeting.FK_BillId = Bill.id
Run Code Online (Sandbox Code Playgroud)

这输出如下:

meetingId | billId
------------------
     a    |  NULL
     b    |  NULL
     c    |     1
     d    |     1
     e    |     1
     f    |     2
     g    |     2
Run Code Online (Sandbox Code Playgroud)

我想要以下输出,billId的组不是NULL:

meetingId | billId
------------------
     a    |  NULL
     b    |  NULL
     c    |     1
     f    |     2
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?顺便说一下,我并不关心分组结果的模糊会议.

谢谢你的帮助!

mysql sql group-by

4
推荐指数
1
解决办法
4608
查看次数

MySQL - 通过索引阻止表中的重复记录?

使用MySQL 5

我有这样一张桌子:

date (varchar)
door (varchar)
shift (varchar)
route (varchar)
trailer (varchar)
+ other fields
Run Code Online (Sandbox Code Playgroud)

此表包含用户生成的内容(从另一个"主"表复制),并防止用户创建相同数据超过1倍,表具有基于上面指定的字段创建的唯一索引.

问题是"重复预防"索引不起作用.
用户仍然可以添加重复记录而不会报告错误.

这个问题是由于我对索引的工作原理不了解吗?

要么

是否可能与主键字段冲突(自动增量int)?

CREATE TABLE如下所示:

CREATE TABLE /*!32312 IF NOT EXISTS*/ "tableA" (
"Date" varchar(12) default NULL,
"door" varchar(12) default NULL,
"Shift" varchar(45) default NULL,
"route" varchar(20) default NULL,
"trailer" varchar(45) default NULL,
"fieldA" varchar(45) default NULL,
"fieldB" varchar(45) default NULL,
"fieldC" varchar(45) default NULL,
"id" int(10) unsigned NOT NULL auto_increment,
PRIMARY KEY  ("id"),
UNIQUE KEY "duplicate_preventer" ("Date","door","Shift","route","trailer"),
Run Code Online (Sandbox Code Playgroud)

重复的行是:

date       door …
Run Code Online (Sandbox Code Playgroud)

mysql sql indexing

4
推荐指数
1
解决办法
5903
查看次数

如何在MySQL中搜索以A开头的名字?

我有一个问题,我们如何使用SELECT来搜索MySQL表中以'A'开头的名称?谢谢

mysql sql database

4
推荐指数
3
解决办法
1万
查看次数

Oracle编号数据类型

当列得到数据类型号(6,3)时,只是得到一个小问题吗?

1234
1234.23
12345
123456
Run Code Online (Sandbox Code Playgroud)

顺便说一句谷歌没有帮助我:/

oracle

4
推荐指数
1
解决办法
5169
查看次数