我有一个简短的问题,我在这一点上被困住了。我有以下查询:
SELECT A, B
FROM my_table AS r
LEFT JOIN my_table_2 AS p ON r.rs_id = p.rs_id
WHERE r.rs_id = $DB->quote($_SESSION['mysession']['id']) EXISTS (SELECT A, B, date FROM my_table WHERE date = CURDATE())';
我想要做的是从数据库中获取结果。如果有一行但是有一条记录与当前日期匹配我只想得到这些行,所以不再是所有的A + B.如果没有当前日期的行,我想默认加载所有A + B.
有谁知道答案?谢谢!
答案 0 :(得分:1)
要以干净的方式执行此操作,您将检查应用程序级别,如果搜索日期等于当前日期的记录的查询返回任何记录。如果没有,请执行第二个查询。
你可以在MySQL中做同样的事情,但是因为这有点像肮脏的" (使用的技术不应该以这种方式使用),我建议在应用程序级别上解决这个问题。如果你有点好奇,请按照以下方式:
SELECT SQL_CALC_FOUND_ROWS whatever
FROM table
WHERE date_column = CURDATE()
UNION ALL
SELECT whatever
FROM table
WHERE FOUND_ROWS() = 0;