【问题标题】:How to use select inside another select (Sub-Query) in mysql query?如何在mysql查询中的另一个选择(子查询)中使用选择?
【发布时间】:2014-05-17 08:50:12
【问题描述】:

我需要在另一个选择中使用选择 ID,但我不知道该怎么做?我的想法是这样的:

$query10 = "SELECT id FROM $database_table WHERE UTCdate >= '{$from_date}' AND satellite_derived_time >= CAST('{$from_time}' AS UNSIGNED)";

$query20 = "SELECT id FROM $database_table WHERE UTCdate >= '{$to_date}' AND satellite_derived_time >= CAST('{$to_time}' AS UNSIGNED)";


$query = "SELECT * FROM $database_table WHERE id BETWEEN '$query10' AND '$query20'";

【问题讨论】:

    标签: mysql select nested subquery


    【解决方案1】:

    使用联接

    SELECT t.*
    FROM $database_table AS tfrom
    JOIN $database_table AS tto
    JOIN $database_table AS t ON t.id BETWEEN tfrom.id AND tto.id
    WHERE tfrom.UTCdate >= '$from_date' AND tfrom.satellite_derived_time >= CAST('$from_time' AS UNSIGNED)
    AND tto.UTCdate >= '$to_date' AND tto.satellite_derived_time >= CAST('$to_time' AS unsigned)
    

    或使用子查询:

    SELECT *
    FROM $database_table
    WHERE id BETWEEN (SELECT id FROM $database_table WHERE UTCdate >= '{$from_date}' AND satellite_derived_time >= CAST('{$from_time}' AS UNSIGNED))
                 AND (SELECT id FROM $database_table WHERE UTCdate >= '{$to_date}' AND satellite_derived_time >= CAST('{$to_time}' AS UNSIGNED))
    

    【讨论】:

    • 查询失败子查询返回多行。
    • 我认为有问题,它显示了我上面的消息。我使用了第二种方法(子查询)。
    • 您的原始代码暗示$query10$query20 中只能有一个值。应该如何处理多个ID?如果可以有多个 ID,则您的原始代码没有意义。
    • 是的,$query10 和 $query20 中只能有一个值
    • 错误消息说他们返回了多个值。
    猜你喜欢
    • 2010-12-25
    • 2016-04-24
    • 2021-10-01
    • 2017-09-11
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多