MySQL 列间搜索

标签 mysql sql search

我有下面描述的表格。

--------------------------------------------------
| id | date_from | date_to | start_from stop_to
--------------------------------------------------
  1   2013-10-12   2013-11-12    1        3
  2   2013-09-08   2013-09-20    2        1
  3   2013-06-04   2013-06-12    1        1
  4   2013-05-02   2013-05-15    2        3
  5   2013-04-11   2013-09-13    2        1

问题是我无法弄清楚如何以我想要的格式选择日期以及 start_from 和 stop_from 之间的数据。

假设我想在 2013-01-01 和 2013-12-31 之间搜索,其中 start_from 或 stop_to 为 1

选择的结果应该是

2013-10-12 1
2013-09-20 1
2013-06-04 1
2013-06-12 1
2013-09-13 1

如果 start_from 或 stop_to 是 2,结果应该是

2013-09-08 2
2013-05-02 2
2013-04-11 2

如果 start_from 或 stop_to 是 3,结果应该是

2013-11-12 3
2013-05-15 3

希望你能明白逻辑

最佳答案

你可以这样做:

SELECT the_date,start_stop FROM (
    SELECT
        id
    ,   date_from as the_date
    ,   start_from as start_stop
    FROM my_table WHERE start_from=1
        UNION ALL
    SELECT
        id
    ,   date_to as the_date
    ,   stop_to as start_stop
    FROM my_table WHERE stop_to=1
    ORDER BY id
) tmp

第一个查询查找与 start_from 条件匹配的行,并提取该匹配的 date_from ;第二个查询查找与 date_to 条件匹配的行,并将 date_to 提取到结果中。 UNION ALL 运算符连接两个查询的结果。

这是一个demo on sqlfiddle .

关于MySQL 列间搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687423/

相关文章:

c# - 此 SqlParameterCollection 不包含 ParameterName 为 '@UserId' 的 SqlParameter

SQL Server 2012 关键字覆盖

MySQL - 如何将两个不同表中的数据放入一张表中

php - 如何将内容动态创建到数据库中并显示在网页上?

java - 使用hibernate JPA,mysql数据库,创建索引错误

MySQL 选择昨天的日期

c# - C#中如何使用prim算法遍历矩形数组中的单元格

algorithm - 我想知道像 tineye.com 这样的反向图像搜索服务是如何工作的……?

android - 允许 Android SDK 通过网站搜索?

php - SQL 表中的 JSON 编码 -> JSON 问题