小编liq*_*car的帖子

SQLite LIKE&ORDER BY匹配查询

我需要一个仅使用LIKE搜索1字段的SQLite查询.

基本示例:

SELECT name FROM table WHERE name LIKE "%John%" ORDER BY name LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

问题是我希望以这种方式对结果进行排序:

  1. 如果该字段相等(例如"John")
  2. 如果字段以"John"开头(例如"John Doe")
  3. 如果该字段包含"John"(例如"Jane John Doe")

以下查询实现了预期结果,但速度很慢:

SELECT name FROM table WHERE name LIKE "%John%" ORDER BY CASE WHEN name = "John" 
THEN 1 ELSE 2 END, CASE WHEN name LIKE "John%" THEN 1 ELSE 2 END, name LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

上面的查询比使用3个单独的查询(一个用于完全匹配,一个用于开始,一个用于包含)的替代方法更慢(或我测试不正确).

还有其他选择吗?

sql sqlite

11
推荐指数
2
解决办法
1万
查看次数

MySQL查询以按降序显示当前日期和其他日期的记录

我在我的数据库中使用以下查询,

SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b WHERE b.active=1 
UNION
SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b INNER JOIN tb_category c ON  b.category_id=c.cat_id 
WHERE c.cat_keyword LIKE 'a' ORDER BY sale_ends  DESC
Run Code Online (Sandbox Code Playgroud)

得到如下结果,

sales_id  | category_id         |sale_starts | sale_ends 
----------|---------------------|------------|--------------
 1        |   10                | 2012-03-31 | 2012-04-30     
 2        |   11                | 2012-03-22 | 2012-04-27
 3        |   25                | 2012-03-31 | 2012-04-25
 4        |   12                | 2012-04-05 | 2012-04-11
Run Code Online (Sandbox Code Playgroud)

现在我需要得到如下结果,即具有today's date/current date assale_ends 的行必须显示在订单的顶部(假设今天的日期/当前日期是2012-04-11),如下所示 -

sales_id      | category_id         |sale_starts | sale_ends …
Run Code Online (Sandbox Code Playgroud)

php mysql date sql-order-by

4
推荐指数
1
解决办法
3801
查看次数

选择具有指定id的条目,以及使用相同外键值前后的一个条目

我有一张看起来像这样的桌子:

| id | fk_book | name |
-----------------------
| 1  | 2       | test1|
| 3  | 2       | test3|
| 6  | 3       | notes|
| 7  | 2       | test2|
Run Code Online (Sandbox Code Playgroud)

不,我想获得id为3. select*from test where id = 3 AND fk_book = 1;

但是还有一种方法可以获得id为1和7的项目吗?我不知道其他条目的ID

谢谢

php mysql

2
推荐指数
1
解决办法
62
查看次数

标签 统计

mysql ×2

php ×2

date ×1

sql ×1

sql-order-by ×1

sqlite ×1