2017-04-04 60 views
0

在通过网络拖网并仍未找到任何简单的答案后,我希望有人可以就此提出建议。从ISNULL子句插入MySql子句

我想要做的就是向表中插入一个新行,如果该表中的值不为空。在这种情况下,我有一个名为“Events”的表。

事件表

Event_ID | Event_Name | Event_Interval | Event_Date | Event_Interval | Event_Repeat 
----------------------------------------------------------------------------------- 
1   My Event  14    2017-04-04 14    Completion 

有上我努力的方向条件;

IF EVENT_INTERVAL != NULL THEN 

    IF EVENT_REPEAT = "DUE" THEN 
    DATE_ADD(EVENT_DATE, INTERVAL EVENT_INTERVAL DAY) 
    ELSE 
    DATE_ADD(NOW(), INTERVAL EVENT_INTERVAL DAY) 
    END IF 

END IF 

所以:当用户完成一个事件,如果间隔值不为空,则插入一个新行到表,其中它添加间隔值要么在事件中使用了一下伪代码的最佳描述日期或当前日期,具体取决于“Event_Repeat”中的值。

到目前为止,我得:

SELECT 
(IF(ISNULL((SELECT e.Event_Interval from events e where e.Event_ID = 1)) = 1, "NULL", "NOT NULL")) 

这工作绝对没问题,可以分辨出间隔值是否为空或不是。我试图将插入语句合并/替换到这里,但至今还没有运气。

如果有人可以帮助正确建构这个(或更好!)请随时为我还在四处寻找查询等提前

感谢我的方式。

+0

'IF EVENT_INTERVAL!= NULL'永远不会奏效,你不能这样比较NULL,你必须使用'不是null'而不是'!= NULL' –

+0

我意识到这个感谢。在该实例中提供的代码是伪代码来描述我试图实现的过程。 – billcox33

回答

0

您可以创建SP作为

CREATE PROCEDURE update_event 
@event_id int 
AS 
BEGIN 
    DECLARE @event_repeat_temp nvarchar(200) 

    SELECT @event_repeat_temp = event_repeat FROM event_table WHERE event_id = @event_id 
    PRINT @event_repeat_temp 

    IF @event_repeat_temp = 'Due' 
    BEGIN 
     INSERT INTO event_table (event_id , event_name, event_interval, event_date, interval,event_repeat) VALUES (2,'My Event',14,'completion') 
    END 

    ELSE 

    BEGIN 
    //whatever you want 
    END 
END 

并称之为SP如下

EXEC update_event @event_id =1