我想在我的表中选择某一行,其中日期在同一个表中另一行的开始日期和结束日期之间。 我的桌子是这样的。
============================================================================================
id newid start end date
-------------------------------------------------------------------------------------------
1 - 25/01/2018 26/02/2018 25/01/2018
2 1 27/01/2018 27/01/2018 27/01/2018
3 1 05/02/2018 05/02/2018 05/02/2018
4 1 27/02/2018 27/02/2018 27/02/2018
============================================================================================
我创建了通过id
调用结果的函数function get($id){
global $wpdb;
$table_name = $wpdb->prefix ."myTable";
$sql = $wpdb->get_results("SELECT * FROM $table_name WHERE id='{$id}'");
return $sql;
}
我希望$sql
在$id
开始日期和结束日期之间返回结果
通过使用mysql而不是php。
答案 0 :(得分:0)
您可以使用以下SELECT
:
SELECT *
FROM table_name t1
WHERE EXISTS (
SELECT *
FROM table_name t2
WHERE t1.date >= t2.start
AND t1.date <= t2.end
AND t1.id <> t2.id
)
现在您可以使用以下PHP函数(get
):
function get($id) {
global $wpdb;
$table_name = $wpdb->prefix ."myTable";
$sql = $wpdb->get_results("SELECT * FROM $table_name t1 WHERE id = '$id' AND EXISTS (SELECT * FROM $table_name t2 WHERE t1.`date` >= t2.`start` AND t1.`date` <= t2.`end` AND t1.`id` <> t2.`id`)");
return $sql;
}