我有类似的东西:
to_days(now()) < to_days(birth)
Run Code Online (Sandbox Code Playgroud)
它可以工作,但我不是比较时间来比较时间.有类似的功能吗?
我有一个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) 尝试创建一个计算列,该列的值将基于其他四列中的值.第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)
希望这是有道理的,因为上面的语法显然不正确.
我有一个表,其中包含社区事件列表,其中包含事件开始和结束日期的列.如果结束日期为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"中测试任何日期.
我需要能够在一个月内每天获取这些数据.我可以一次只针对每一天运行查询,但我宁愿运行一个可以一次给我整个月的查询.有没有人对我如何做到这一点有任何建议?
不,我不能使用存储过程.
问题是获取表列数据并将其用作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) 我在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查询:
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 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) 我有一个问题,我们如何使用SELECT来搜索MySQL表中以'A'开头的名称?谢谢
当列得到数据类型号(6,3)时,只是得到一个小问题吗?
1234
1234.23
12345
123456
Run Code Online (Sandbox Code Playgroud)
顺便说一句谷歌没有帮助我:/
sql ×8
mysql ×7
group-concat ×2
csv ×1
database ×1
filter ×1
group-by ×1
indexing ×1
oracle ×1
postgresql ×1
sql-server ×1