1
我有一張表user_log我存儲有關用戶活動的信息,例如登錄和註銷操作。 表有四個colums:ID,USER_ID,行動和時間戳MySQL INNER JOIN複製一列
我想選擇所有註銷,並在一個結果表登錄行動時間戳一些USER_ID,會有列像這樣:
USER_IDlogin_timestamplogout_timestamp。
我用這個MySQL查詢:
SELECT
user_log.user_id,
user_log_login.login_timestamp,
user_log_logout.logout_timestamp
FROM
user_log
INNER JOIN
(SELECT
user_id, timestamp as login_timestamp
FROM
user_log
WHERE
action = 'login successful') as user_log_login
ON
user_log.user_id = user_log_login.user_id
INNER JOIN
(SELECT
user_id, timestamp as logout_timestamp
FROM
user_log
WHERE
action = 'logout successful') as user_log_logout
ON
user_log.user_id = user_log_logout.user_id
WHERE
user_log.user_id = 4
是的,因爲'user_id = 4'有多個'logout_timestamp'。 –
@MotoGP我擁有相同數量的登錄和註銷時間戳。使用with()選擇Distinct給了我語法錯誤,但是沒有括號,我得到和發佈一樣的問題。 – pavon147
我想你會得到一個給定用戶的登錄和註銷時間戳的交叉結果。你需要添加更多的過濾條件。 –