1

私は次のSQLクエリを持っています:

"SELECT id, case, value 
FROM tbl1 
WHERE (case > '100' OR case is null) 
ORDER BY case DESC, value DESC"

結果は次のようになります。


| id   | case     | value  |
 -------------------------- 
| 17   | case1    | value1 |
| 16   | case2    | value2 |
| 14   | case3    | value3 |
| 18   | empty    | value4 |
| 15   | empty    | value5 |

たとえば、「ケース」が設定されている場合、100件の結果が得られます。「ケース」が空の500。

これで、「case」がSETの場合の最初の20件の結果と、「case」がEMPTYの場合の100件の結果のみが必要になります。

私が次のことをした場合:

"SELECT id, case, value 
FROM tbl1 ... 
ORDER BY case DESC,value DESC 
LIMIT 0,120"

「case」が設定されているすべての値が表示されます...しかし、必要なのは20だけです。

4

2 に答える 2

1

2つのクエリを結合するのが最善です

SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NOT NULL
LIMIT 20
UNION
SELECT id, case, value 
FROM tbl1 
WHERE CASE IS NULL
ORDER BY case DESC
LIMIT 100
于 2013-03-22T17:48:58.083 に答える
0

使うunion

SELECT id, case, value 
FROM tbl1 
WHERE case > '100'
ORDER BY case DESC, value DESC
limit 20
union
SELECT id, case, value 
FROM tbl1 
WHERE case is null
ORDER BY case DESC, value DESC
limit 100
于 2013-03-22T17:49:37.790 に答える