我花了許多小時尋找解決我目前的問題,但沒有運氣。複雜更新,然後插入SQL
我有4個表:
- 追求
ACC_ID key value
10000 LOGIN 1
10000 LOGINCNT 3
10000 LOGINTMR 8465
10002 LOGIN 0
10002 LOGINCNT 2
10002 LOGINTMR 82415
10003 LOGIN 1
10003 LOGINCNT 1
10003 LOGINTMR 3650
- 字符
*C_ID ACC_ID Online
100 10000 1
101 10000 0
102 10001 0
103 10000 0
104 10002 1
105 10003 1
106 10002 0
107 10000 0
108 10003 0
- 郵件
*M_ID C_ID Title Message
1 100 Event Free Gift
2 100 Event Free Gift
3 104 Event Free Gift
4 105 Event Free Gift
- mail_item
*ID M_ID Item_ID Amnt
1 1 3521 1
2 1 3522 1
3 3 3521 1
4 3 3522 1
5 2 1638 8
6 4 3521 1
7 4 3522 1
注:帶*列是唯一到該表
我想要做的是UPDATE
上取決於這些標準追求表中的每個值。 。:
- if 關鍵是LOGIN和ACC_ID是字符然後值 = 1,否則,如果不在線則值 = 0
- 如果關鍵是LOGINTMR和ACC_ID在線上字符然後在線值 =(UNIX紀元時間),否則,如果不在線則值 = 0
- 如果有史以來第一個標準的值是1,那麼插入新行中郵箱和mail_item得到C_ID從字符這是在線。
注意到有上字符許多行與ACC_ID 10000,但只有1行網上。其他ACC_ID可能根本沒有在線字符。因此,如果對個字符進行查詢,則應該返回在線 = 1或如果在線 = 0的最後結果。
由於這種複雜性,它讓我頭暈目眩。我希望有人能幫忙。
'mail_item'中的列從哪裏來? – Barmar
爲什麼100在郵件表中有兩個條目? – Valli
@Barmar - mail_item來自郵件上附加的項目.. –