如何使用左連接編寫此查詢。由於我使用的框架不支持正確的連接,我需要重寫查詢。任何人都可以建議我一個可能的解決方案用派生表替換右連接到左連接
select Audit.history_id,Audit.field,modifiedtime,operation from Audit right join (select History.history_id from History where refid=2000000020088 order by
modifiedtime limit 5) as Hist on Audit.history_id=Hist.history_id;
desc Audit
+------------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------+------+-----+---------+-------+
| AUDIT_ID | bigint(19) | | PRI | 0 | |
| HISTORY_ID | bigint(19) | | MUL | 0 | |
| FIELD | varchar(50) | | | |
| OLD_VALUE | varchar(50)| YES | | NULL | |
| NEW_VALUE | varchar(50)| YES | | NULL | |
+------------------+------------+------+-----+---------+-------+
desc History
+---------------+-------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------------------+-------+
| HISTORY_ID | bigint(19) | | PRI | 0 | |
| REFID | bigint(19) | | MUL | 0 | |
| OPERATION | varchar(50) | YES | | NULL | |
| MODIFIED_TIME | datetime | | | 0000-00-00 00:00:00 | |
+---------------+-------------+------+-----+---------------------+-------+
查詢看起來有點怪:你總是會得到來自歷史,其中REFID = 2000000020088前五記錄沒有考慮history_id考慮。 它不應該是: 從History中選擇History.history_id,其中refid = 2000000020088和History.history_id = Audit.history_id order by modifiedtime limit 5 –
會有更多的歷史條目,最初我會顯示前5個,然後是下5個,然後繼續。 – John
好的,但每個審計記錄將始終與子查詢返回的前5條記錄相連。 –