如果EXISTS(MYSQL)只获得此结果

时间:2015-11-11 03:13:06

标签: mysql

我有一个简短的问题,我在这一点上被困住了。我有以下查询:

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.

有谁知道答案?谢谢!

1 个答案:

答案 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;