( ) と ( )netStream
の 2 つの外部キーを持つテーブル ( ) があります。logSessions_logSessionID
accountSessions_accountSessionID
( logSessions_logSessionID
) は必須です( ) は必須でaccountSessions_accountSessionID
はありません。
接続と非必須ステータスを示すブロックスキームの一部を次に示します。
(背景:logSessions
はすべての訪問者が持つセッションでaccountSessions
あり、ログイン セッションです。誰もがlogSession
(誰もが訪問者であるため) を持っていますが、誰もがログインしているわけではないため、ログイン セッションはありませんaccountSession
)
( ) に行を挿入したいのですがnetStream
、すべての場合に ( logSession
) がありますが、( ) とは異なりaccountSession
ます。したがって、( ) がある場合はaccountSession
その ID も挿入し、( ) がない場合はaccountSession
そのフィールドを ( netStream
) NULL のままにします。
ハッシュ値は に格納されBinary(x)
ているため、 を使用しますUNHEX()
。
これは私が書いたMySQLです。エラーメッセージはありませんが、動作しません。何が問題ですか?
INSERT INTO `test-db`.`netStream` (`netStreamHash`, `logSessions_logSessionID`, `accountSessions_accountSessionID`)
SELECT UNHEX("1faab"), `logSessions`.`logSessionID`, NULL FROM `logSessions` CROSS JOIN `accountSessions`
WHERE `logSessions`.`logSessionHash` = UNHEX("aac") AND
`accountSessions`.`accountSessionHash` = UNHEX("2fb");