私は180k行以上を返す1つのクエリを持っています。私はわずか10回しか戻らないように少し変更する必要があります。SQLクエリ経由で10行しか返す方法
結果として10行だけを表示するにはどうすればよいですか?
は私がEXCEPT
試してみたが、ちょうど10
私は180k行以上を返す1つのクエリを持っています。私はわずか10回しか戻らないように少し変更する必要があります。SQLクエリ経由で10行しか返す方法
結果として10行だけを表示するにはどうすればよいですか?
は私がEXCEPT
試してみたが、ちょうど10
あなたはLIMITを使用することができます。特に、彼らはそう簡単に作成している与えられた(とインデックスを作成することができます) -
一時表はあなたの友人もできます。これは、最初のn行を表示します。例:
SELECT * FROM Orders LIMIT 10
ページ設定をOFFSETに追加しようとしている場合。 20行目から10行が返されます。例:
SELECT * FROM Orders LIMIT 10 OFFSET 20
MySQLはEXCEPT
(私の知る限り)をサポートしていませんよりも多くを返すようです。
おそらく最も効率的なルートを1つに2つのWHERE
句を組み込むことであろう。私は効率的なと言っています。「このクエリを通常のレポートや運用アプリケーションで実行する場合は、このようにしてください。例えば
:
-- Query 1
SELECT * FROM table WHERE `someDate`>'2016-01-01'
-- Query 2
SELECT * FROM table WHERE `someDate`>'2016-01-10'
-- Becomes
SELECT * FROM table WHERE `someDate` BETWEEN '2016-01-01' AND '2016-01-10'
それはあなたがクエリが非常に複雑であることを意味している可能性だし、あなたがしている迅速(読み:必ずしも効率的ではない)の後のための違いを取得する方法一回限りの調査。ケースであること、あなたがUNION
とサブクエリを悪用することができることを
:
(未テスト、擬似SQLとして扱う...)
SELECT
*
FROM (
SELECT * FROM table WHERE `someDate`>'2016-01-01'
UNION ALL
SELECT * FROM table WHERE `someDate`>'2016-01-10'
) AS sub
GROUP BY
`primaryKey`
HAVING
COUNT(1) = 1;
これは、しかし醜いです。効率的ではありません。 唯一の違いが片側は(私はそれ「右側」と呼びます)のみということである(左が含まれ行方不明レコードは、次の2つのクエリをLEFT JOIN
可能性があることをと仮定すると
サブシステムとして)、右側にヌルにフィルタリングします。しかし、それは真実であるすべての警告に依存しているでしょう。
CREATE TEMPORARY TABLE tmp_xyz AS SELECT ... FROM ... WHERE ...;
* 2つのキューレスの違いを表示します。 –
あなたの質問を私たちに提供できますか? – Imanez
2台の車の違いを知りたい。まあ、どちら? –