Mysql SQL-在同一行中切换两个不同的日期

Mysql SQL-在同一行中切换两个不同的日期,mysql,sql,Mysql,Sql,我有一个相当简单的问题: SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY' AND [date] < '2012-06-27'; 选择发票id,其中员工id='XXXX'和客户id='YYYY' 和[日期]'2012-06-27' ) 您可以使用双重条件,例如: and ( time_created <= transaction_date and time_created &

我有一个相当简单的问题:

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
    AND [date] < '2012-06-27';
选择发票id,其中员工id='XXXX'和客户id='YYYY'
和[日期]<'2012-06-27';
我想知道是否有一种方法可以根据条件来切换列[date],在这种情况下,是较小还是最早

换句话说,类似于

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
    AND (IF(time_created <= transaction_date)) time_created < '2012-06-27' ELSE 
        transaction_date > '2012-06-27');
选择发票id,其中员工id='XXXX'和客户id='YYYY'
和(如果(时间_创建“2012-06-27”);
因此,一个通过比较两列来使用行中最早日期的查询(虽然看起来创建的时间应该总是最早的,但这里不是这样)。如果不是,我可以将查询拆分为两个,但我想知道是否可以在一个查询中完成。

选择发票id,其中员工id='XXXX'和客户id='YYYY'
SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
AND IF(time_created <= transaction_date, time_created < '2012-06-27', transaction_date > '2012-06-27');
如果(time_创建“2012-06-27”);
或ANSI SQL解决方案:

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
AND CASE WHEN time_created <= transaction_date
         THEN time_created < '2012-06-27'
         ELSE transaction_date > '2012-06-27'
    END
选择发票id,其中员工id='XXXX'和客户id='YYYY'
以及time_创建“2012-06-27”时的情况
结束
选择发票id,其中员工id='XXXX'和客户id='YYYY'
如果(time_创建“2012-06-27”);
或ANSI SQL解决方案:

SELECT invoice_id WHERE employee_id = 'XXXX' AND customer_id = 'YYYY'
AND CASE WHEN time_created <= transaction_date
         THEN time_created < '2012-06-27'
         ELSE transaction_date > '2012-06-27'
    END
选择发票id,其中员工id='XXXX'和客户id='YYYY'
以及time_创建“2012-06-27”时的情况
结束

您可以使用双重条件,例如:

and  (
    time_created <= transaction_date and time_created < '2012-06-27' or
    time_created > transaction_date and transaction_date > '2012-06-27'
)
和(
创建交易的时间日期和交易日期>'2012-06-27'
)

您可以使用双重条件,例如:

and  (
    time_created <= transaction_date and time_created < '2012-06-27' or
    time_created > transaction_date and transaction_date > '2012-06-27'
)
和(
创建交易的时间日期和交易日期>'2012-06-27'
)

如果
time\u created
可以为空,这将失败是的,我假设
time\u created
transaction\u date
不为空。如果
time\u created
可以为空,这将失败是的是的,我假设
time\u created
transaction\u date
不为空。ANSI SQL不允许在像这样的一个case。它必须是
case when…then 1 end=1
,而不是
case when…then 1=1 end
。您的第一个查询可能是MySQL中最好的,+1根据
then
子句是一个
:=|NULL
time\u created<'2012-06-27'
是一个表达式,返回布尔值SQL不允许在这样的情况下使用条件。它必须是
case when…then 1 end=1
,而不是
case when…then 1=1 end
。您的第一个查询可能是MySQL中最好的,+1根据
then
子句是
:=|NULL
,而
time\u created<'2012-06-27'
是n表达式,返回布尔值,类似这样的?类似这样的?