2016-10-12 148 views
-1

我有一個哈希表:使用條款 - MYSQL

table: hash 
hash_id hash 
'1', 'xKsKoM' 
'2', 'taahmD' 
'3', '23PNiJa' 

當您運行查詢:

select * 
from 
where hash in ('taahmD', 'taahmD') 

這個結果(一行):
1. taahmD

但我需要返回(兩行,... nlines):
1. taahmD
2. taahmD

它只返回一行 - 需要返回兩個(重複)。

解決方案是什麼?

+0

給出您的示例數據,爲什麼它應該返回2個結果?您的'where'標準等同於'where hash ='taahmD'' ... – sgeddes

+0

需要返回重複,但是由於同一個內的值只返回一行。所有的工會都會這樣? – user8414

+0

我可能仍然感到困惑,請更新您的問題與實際樣本數據和預期結果(從樣本數據)... – sgeddes

回答

0

例如,您可以加入一些帶有兩個值的表格。 (編輯添加單詞內部)

select t.* 
from <your table> t 
INNER JOIN (select 1 as a from dual 
     union all 
     select 2 as a from dual) d on 1=1 
where hash in ('taahmD') 

或者請求表兩次

select t.* 
from <your table> t 
where hash in ('taahmD') 
union all 
select t.* 
from <your table> t 
where hash in ('taahmD') 
+0

謝謝...我想用第一種形式爲不同的哈希重複不同的時間?所以我嘗試但沒有工作: 'select h。 * from hash h JOIN(從雙精選到1到 聯合全部 從對偶中選擇2)d on 1 = 1和hash in('taahmD') JOIN(從double到b選擇1)和on 1 = 1和散列('23PNiJa')' – user8414

+0

謝謝你的糾正。正如我在MySQL中所知道的那樣,你應該寫入JOIN的INNER JOIN。我糾正第一個查詢。 –

+0

爲什麼寫入「JOIN(從2到b選擇1)和1 = 1並在('23PNiJa')」中散列?它沒有意義 –

0

但我需要回到(雙線,... nlines)

你可以使用union ,但是對於n行來說會很麻煩,另一種方式是加入簡單的分層查詢生成n行。下面是5行的示例(Oracle版本):

select hash 
    from hash cross join (select null from dual connect by level <= 5) 
    where hash = 'taahmD'