0

只需要一些关于 SQL 语句的帮助,我有一个包含一堆用户数据的表,目前我正在通过 rowid 降序获取所有数据。但是我需要修改数据的显示方式如下:

该表有一个字段,用户可以在其中指定自己的值,也可以选择默认值。选择默认值时,该字段会自动填充“randomstring_standardefaultvalue”。

所以基本上我需要选择用户没有选择默认值的所有数据,并让它们按降序排列,然后抓取用户选择默认值的所有行,并在按降序 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

您仍然可以使用CASEinorder 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 回答