我想找到所有與成對串列(多列)相匹配的行,但我的查詢沒有成功。如果我只有任何一列的串列,我就能得到結果,但當它們成對時就不能。
SELECT * FROM table
WHERE (name,age) IN (('john',23), ('jane',50), ('john',44)
我看到關于使用EXISTS的帖子,但我不知道如何轉換這個查詢。
我檢查了我的資料庫,它應該回傳8條記錄,但它卻回傳了一個空表
uj5u.com熱心網友回復:你應該使用以下解釋:
SELECT *
FROM t
WHERE (col1, col2)
IN ( VALUES (val1a, val2a), (val1b, val2b)) 。
你的查詢將是:-
SELECT * FROM t
WHERE (name, age) IN ( VALUES ('john', 23),('jane',50),('john',44) )。
uj5u.com熱心網友回復:
我檢查了我的資料庫,它應該回傳8行,但它回傳的是一個空表
。
你的檢查是錯誤的。 該查詢正在做你想做的事情。
一種可能性是名稱不正確,因為它們有額外的字符--也許是隱藏的。 你可以很容易地檢查這一點。 這是否回傳了什么?
SELECT *
FROM table
WHERE name = 'john'/span>;
如果這沒有回傳任何行,而你認為它應該如此,那么你需要弄清楚哪里出了問題。 這個條件有效嗎?
WHERE name LIKE '%john%'
問題可能是名字開頭的空格、隱藏的字符或外觀相似的字符。
如果第一個查詢確實回傳了行,那么問題可能出在age。 這是否會回傳任何東西?
SELECT *
FROM table
where name = 'john' AND age = 23;
age的問題更微妙,但有一種可能是浮點表示法,其值實際上是22.9999999997,而不是23。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/332507.html
標籤:
