0

SQLステートメントについて少し助けが必要です。たくさんのユーザーデータを含むテーブルがあります。現在、すべてのデータをROWIDの降順で取得しています。ただし、データの表示方法を次のように変更する必要があります。

このテーブルには、ユーザーが独自の値を指定したり、デフォルト値を選択したりできるフィールドがあります。デフォルト値を選択すると、フィールドに「randomstring_standardefaultvalue」が自動的に入力されます。

したがって、基本的に、ユーザーがdefaultvalueを選択しなかったすべてのデータを選択し、降順で並べ替えてから、ユーザーがdefaultvalueを選択したすべての行を取得し、rowidの降順で並べ替えられた最初のデータセットの後にデータを入力する必要があります。

私の現在のSQLは次のようになります

$query = "SELECT * FROM userform ORDER BY _rowid_ DESC LIMIT {$offset}, {$pl};";

テーブルデータ:

rowid  date  username  defaultoruniquevalue  member  etc...

助けていただければ幸いです。ありがとう!

答え:

SELECT *, IF(defaultoruniquevalue LIKE CONCAT('%','defaultstring','%'), 1, 0) AS uses_default
FROM table
ORDER BY uses_default ASC, _rowid_ DESC
LIMIT {$offset}, {$pl
4

2 に答える 2

1

私はあなたの質問を正しく理解していることを願っていますが、クエリにWHERE句を追加する必要があるようです。

SELECT *
FROM userform
WHERE defaultoruniquevalue != "default"
ORDER BY rowid DESC
LIMIT {$offset}, {$pl}

編集

SELECT *, IF(defaultoruniquevalue LIKE '%_default', 1, 0) AS uses_default
FROM userform
ORDER BY uses_default ASC, rowid DESC
LIMIT {$offset}, {$pl}
于 2012-09-19T02:11:33.780 に答える
1

あなたはまだ節で使用CASEすることができますorder by

SELECT..
FROM..
WHERE..
ORDER BY (CASE defaultoruniquevalue
               WHEN 'randomstring_standardefaultvalue' THEN 0 
               ELSE 1 END) DESC,
         rowid DESC
于 2012-09-19T02:13:42.573 に答える