1

一般的な HTML テーブルの特定のクエリを処理する特定のオブジェクトがあります。これらのクエリは、サブクエリ、集計などを含む通常の SELECT です。

現在の状況では、アプリケーションは、(自動) ページネーションを有効にするために、クエリが返す結果の数をカウントします。

1. SELECT COUNT(*) FROM (SELECT this, that, SUM(foo), COUNT(bar) FROM b WHERE x = y)

次に、いくつかのオブジェクトが処理され、ページネーションなどが追加されます。テーブルには、同じクエリ + LIMIT 句が入力されます。

2. SELECT this, that, SUM(foo), COUNT(bar) FROM b WHERE x = y LIMIT n

しかし、その count クエリ (1 に示されているように) は非常に遅いので、これを使用して置き換えたいと思います:

3. SELECT COUNT(*) FROM b WHERE x = y<-- 1 & 2 のクエリですが、 に置き換えthis, that, SUM(foo), COUNT(bar)ましたCOUNT(*)

問題は、サブクエリを使用するときに混乱することなく、SELECT と FROM の間のすべてを効果的に置き換えるにはどうすればよいかということです。正規表現でこれを行うことはできますか? 別の方法はありますか?

クエリは毎回異なります。これは、2 つのクエリを実行する汎用ハンドラーです。1 つはカウント クエリ、もう 1 つはテーブル内のデータ用です。SELECT最初のとそれに対応するの間のすべてをカットする一般的な解決策を見つけようとしていますFROM

4

1 に答える 1

1

私は次のことをやろうとしました。お役に立てば幸いです。

<?php
$new = "source,destination";

$source = "SELECT t.id , t.name, t.number from tbl_tttt t";

$start = 'select ';
$end = ' from';

$data = preg_replace('#('.preg_quote($start).')(.*)('.preg_quote($end).')#si', '$1'.$new.'$3', $source);


    echo $data;

?>

次に、クエリは次のようになります。

SELECT source,destination from tbl_tttt t
于 2015-02-02T13:45:27.260 に答える