我有 2 行
code name
1 cake
2 chocolate
這個查詢給了我兩個結果
select * from table a where a.code=2 or a.code =1
如果這些記錄之一沒有顯示,我不想檢索任何東西。
select * from table a where a.code=2 or a.code =1
and exists ( select 1 from table b where a.code=b.code )
uj5u.com熱心網友回復:
您可以使用決議函式:
SELECT code,
name
FROM (
SELECT a.*,
COUNT(DISTINCT code) OVER () AS num_codes
FROM table_name a
WHERE a.code IN (1,2)
)
WHERE num_codes = 2;
其中,對于樣本資料:
CREATE TABLE table_name (code, name) AS
SELECT 1, 'cake' FROM DUAL UNION ALL
SELECT 2, 'chocolate' FROM DUAL;
輸出:
代碼 姓名 1 蛋糕 2 巧克力
如果你:
DELETE FROM table_name WHERE code = 1;
再次運行查詢,它輸出:
代碼 姓名
db<>在這里擺弄
uj5u.com熱心網友回復:
簡單檢查 count distict
select * from tab1
where code in (1,2)
and (select count(distinct code) from tab1 where code in (1,2)) = 2;
如果你想放棄表有重復行的情況,例如 1,1,2
添加其他謂詞過濾器
and (select count(*) from tab1 where code in (1,2)) = 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/371567.html
上一篇:多個表通過單列連接到一個表
