2017-07-26 4 views
3

レコードの古いバージョンを返します(データベース設計が悪いため)、最新のレコードのみを取得しようとします。だから私は最大のIDとのものを取得しようとするが、クエリが複雑であり、多くのレコードがあります。したがって、このような副選択クエリは機能しません。SQLレコードが繰り返されている場合は、最大IDを持つレコードを選択してください

SELECT row 
FROM table 
WHERE id=(
    SELECT max(id) FROM table 
    ) 

これは私の質問です。私の会社がTestlinkを使用している方法では、あなたがそれに精通しており、これに対するよりよい解決策があれば、それは感謝します。

SELECT req_doc_id, scope,nh.parent_id,nh.id 
FROM (SELECT nh.id, req_doc_id,doc_id FROM nodes_hierarchy nh, 
req_specs r1, requirements r2 
WHERE nh.parent_id = r1.id AND nh.id = r2.id 
AND (r1.doc_id LIKE '%BlaBla%' OR r1.doc_id LIKE '%Tralala%')) 
AS t1, nodes_hierarchy nh, req_versions r1 
WHERE t1.id = nh.parent_id AND nh.id = r1.id 

そして、ResultSetが

NAME..................ID    
____ 

BlaBla1..............163   

BlaBla1..............190 

BlaBla2..............173 

Tralala..............15 

Tralala2.............26 

Tralala2.............19 

である私がしたいことは次のとおりです。

NAME..................ID    
____ 


BlaBla1..............190 

BlaBla2..............173 

Tralala..............15 

Tralala2.............26 
+0

は、我々はあなたが使用しているRDBMSのチェックを倍増することはできますか? – Strawberry

+0

ようこそスタックオーバーフロー!あなたの投稿を破壊しないでください。 Stack Exchangeネットワーク上に掲載することで、SEがそのコンテンツを配布する権利(CC BY-SA 3.0ライセンス)(https://creativecommons.org/licenses/by-sa/3.0 /))。 SEのポリシーによって、どんな破壊行為も元に戻ります。この投稿とあなたのアカウントとの関連付けを解除するには、[解約リクエストの正しいルートは何ですか?](https://meta.stackoverflow.com/q/323395) –

答えて

-1

ここに行く:

SELECT Name,Notes 
FROM (select nh.id ,req_doc_id as Name, scope as Notes from 
(select nh.id,req_doc_id,doc_id from nodes_hierarchy nh , 
req_specs r1, requirements r2 
where nh.parent_id = r1.id and nh.id = r2.id 
and (r1.doc_id like '%Tralala%' 
or r1.doc_id like '%BlaBla'))  

as t1, 
nodes_hierarchy nh, req_versions r1 
where t1.id = nh.parent_id and nh.id = r1.id) AS TABLO 
INNER JOIN(
SELECT MAX(nh.id) ID ,scope FROM (select nh.id,req_doc_id,doc_id from nodes_hierarchy nh , 
req_specs r1, requirements r2 
where nh.parent_id = r1.id and nh.id = r2.id 
and (r1.doc_id like '%Tralala%' 
or r1.doc_id like '%BlaBla')) 

as t1, nodes_hierarchy nh, req_versions r1 where t1.id = nh.parent_id and nh.id = r1.id GROUP BY req_doc_id) 
INNERTABLE on INNERTABLE.ID = TABLO.ID; 
+0

私は、不可解な結合構文を主張するべきではないと思います。 – Strawberry

0
SELECT TB.NAME,TB.ID FROM TABLE TB 
INNER JOIN 
(
    SELECT NAME,MAX(ID) ID FROM TABLE GROUP BY NAME 
)INNERTABLE ON INNERTABLE.ID=TB.ID 

は、クエリの上に試してみてください。

+0

私が言ったように、レコードの数とクエリのために既に複雑さの多くを持っている –

+1

@ LabadaEfel2それはサブセットquery.Andではない唯一の最適な方法..です! –

+0

しかし、私のクエリの男を見てください:) –

関連する問題