SQL架构:
CREATE TABLE SNMASTER (
SERIAL_NUMBER varchar(50),
WORK_ORDER int(5),
ASSY_ID int(3)
);
CREATE TABLE TRANSACTIONS (
SERIAL_NUMBER varchar(50),
OPERATION_ID int(5),
CREATED_ON DATETIME
);
INSERT INTO SNMASTER VALUES('0910A40877',56794,841);
INSERT INTO SNMASTER VALUES('0910A40886',56794,841);
INSERT INTO SNMASTER VALUES('0910A40895',56794,841);
INSERT INTO SNMASTER VALUES('0910A40902',56794,841);
INSERT INTO SNMASTER VALUES('0910A40911',56794,841);
INSERT INTO SNMASTER VALUES('0910A40920',88545,841);
INSERT INTO SNMASTER VALUES('0910A40939',88545,841);
INSERT INTO SNMASTER VALUES('0910A40948',88545,841);
INSERT INTO SNMASTER VALUES('0910A40957',97846,842);
INSERT INTO SNMASTER VALUES('0910A40966',97846,842);
INSERT INTO TRANSACTIONS VALUES('0910A40886',113,'2020-02-27 13:39:46');
INSERT INTO TRANSACTIONS VALUES('0910A40877',116,'2020-02-27 13:39:48');
INSERT INTO TRANSACTIONS VALUES('0910A40886',116,'2020-02-27 13:40:03');
INSERT INTO TRANSACTIONS VALUES('0910A40939',113,'2020-02-27 13:40:20');
INSERT INTO TRANSACTIONS VALUES('0910A40886',160,'2020-02-27 13:40:48');
我需要这样显示我的结果:
SERIAL_NUMBER 113 116 160
0910A40877 0 1 0
0910A40886 1 1 1
0910A40895 0 0 0
0910A40902 0 0 0
0910A40911 0 0 0
结果显示表SNMASTER的前5行
然后查看表事务,并在有OPERATION_ID时写入1
您可以使用exists
:
select sm.*,
(exists (select 1
from transactions t
where t.serial_number = sm.serial_number and t.operation_id = 113
)
) as has_113,
(exists (select 1
from transactions t
where t.serial_number = sm.serial_number and t.operation_id = 116
)
) as has_116,
(exists (select 1
from transactions t
where t.serial_number = sm.serial_number and t.operation_id = 160
)
) as has_160
from snmaster sm;
对于事务(serial_number,operation_id)
的索引,这可能是最快的方法。
在MySQL中,exists
返回一个布尔值。数据库将1
视为true,而将0
视为false,这就是为什么这样做可以满足您的需要。在其他数据库中,您需要将exists
包装在case
表达式中。
我有三个表表1、表2、表3。表1有a、b列。表2有c、b、d列。表3有d、e列 我需要匹配表1、b上的表2,以及d上的表2和表3。我需要在表1的“a”列中显示数据,如果表2和表3中存在匹配的行,那么我需要在表3中显示列“e”以及列“a”。如果表2和表3之间的匹配中不存在行,我可以显示null。 让我知道任何澄清或数据。我使用sqlite3,但存在子句的工作方式似乎就像在sql中一样。 我尝试了,但
如果值为空,则需要在单元格中显示一个不间断的空格。这是我的模板: 我试过这个,但不管用: 它返回值的问题是: 如果许可证号带有值,则单元格为空,行颜色如下所示。 利用卢库马的建议,它表明了这一点: 更改筛选器中的if语句后,仍然不显示非值:
问题内容: 我有一个钥匙型课。让我们称为map的实例。 我要添加{ ,}(是的一个实例,并且一)该地图。但是,如果键已经存在,我想求和该映射图中的当前值。 目前我使用 但是在Java 8中是否有一种时髦的方式来做到这一点,例如使用和? 遗憾的是我无法弄清楚。 谢谢。 问题答案: 这就是地图上的合并功能的作用。 这可以进一步减少到 它基本上等于
问题内容: 使用Sql Server2012。我有一个存储过程,它的一部分检查用户名是否在表中。如果是,则返回1,否则返回2。这是我的代码: 但是,我一直收到以下错误: ‘1’附近的语法不正确。 使用IF EXIST甚至可以做到吗? 问候 问题答案: 如果您想这样做,那么这就是您要遵循的语法。 您不一定严格要求这些语句,但是最好是从一开始就养成这种习惯。
问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。
问题内容: 我试图获得过去7天注册的用户数量以显示在图表上,如果mysql返回0而不是没有行,那将是很好的。目前,它只返回每天都有一行值的行 问题答案: 尝试: