我有兩個 oracle 表:users并且logs,如下所示,
users:
---------
id number,
name varchar2(50)
logs:
-----
user_id number,
visit_date date
我需要找出從未出現在日志表中的前 10 個用戶(意味著他們從未訪問過該頁面),我可以撰寫一個 sql:
select *
from users u
where not exists (
select 1 from logs o
where o.user_id = u.id)
and rownum<=10
但是現在的問題是這兩個表不在同一個模式中,它們無法相互訪問,所以我無法加入它們。因為有兩個微服務,一個微服務應該查詢自己的模式如果我從 獲取 10 條記錄users,可能它們都從未訪問過該頁面,我需要再獲取 10 條,然后仍然有 5 個用戶沒有訪問該頁面,我需要再取 5 條,依此類推。所以我不確定第一次應該取多少條記錄。這樣做是個好主意嗎?以及如何撰寫代碼?
如果我獲取 2 個表的所有記錄,然后使用 Java 代碼進行連接,我擔心資料量太大。或者我應該讓這兩個表相互訪問嗎?
那么,如何使用 2 個表進行分頁但不加入它們?
uj5u.com熱心網友回復:
但是現在的問題是這兩個表不在同一個模式中,它們無法相互訪問,所以我無法加入它們。
創建一個可以同時查看模式并登錄到該用戶并使用以下方式訪問表的用戶schema_name.table_name:
SELECT *
FROM schema1.users u
WHERE NOT EXISTS (
SELECT 1
FROM schema2.logs l
WHERE l.user_id = u.id
)
ORDER BY u.something
FETCH FIRST 10 ROWS ONLY
或者
SELECT *
FROM (
SELECT *
FROM schema1.users u
WHERE NOT EXISTS (
SELECT 1
FROM schema2.logs l
WHERE l.user_id = u.id
)
ORDER BY u.something
)
WHERE ROWNUM <= 10
或者,創建第三個模式和前兩個模式中的和表GRANT的SELECT權限,然后在第三個模式中創建一個視圖和一個新的微服務并使用它。USERSLOGS
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/532079.html
標籤:爪哇sql甲骨文加入分页
上一篇:選擇至少沒有一個子元素的記錄
