簡體   English   中英

日期和條件之間的MySQL SELECT

[英]mySQL SELECT in between dates and with conditions

我正在崩潰,出於這些目的,我在SQL方面的經驗受到了一定的限制。 說我有以下兩個表:

客戶清單:

id    |    email
-----------------------------------
1     |    mail1@mail.com
2     |    mail2@mail.com
3     |    mail3@mail.com

payment_log

customer_id    |    payment_date    |    payment_type_id
-------------------------------------------------------------
1              |    2016-01-01      |    3
1              |    2016-01-05      |    3
1              |    2016-01-02      |    2
1              |    2016-04-01      |    1
1              |    2016-04-12      |    2
2              |    2016-01-13      |    1
2              |    2016-01-19      |    1
2              |    2016-01-07      |    1
2              |    2016-01-04      |    1
3              |    2016-04-15      |    2

在此示例中,我希望選擇的客戶必須符合以下條件:

  • 必須在2016年3月22日之前完成付款,且付款類型不限,但payment_type_id = 3。

  • 必須在2016-03-22之后使用Payment_type_id = 3進行至少一筆付款。

查詢后需要的客戶是customer_id = 1。

我認為您應該在同一張表上使用內部聯接

SELECT distinct a.customer_id FROM payment_log  as a
INNER JOIN payment_log as b 
        on (a.customer_id = b.customer_id and a.payment_date = b.payment_date)
WHERE (a.payment_date < '2016-03-22' AND a.payment_type_id!=3)
AND  (b.payment_date>2016-03-22 AND b.payment_type_id=3)";

嘗試這個。

SELECT customer_id 
FROM payment_log 
WHERE payment_date =< '2016-03-22' AND payment_type_id != '3');

嘗試類似:

SELECT 
  DISTINCT customer_id 
FROM 
  payment_log 
WHERE 
    (payment_date < '2016-03-22' AND payment_type_id != 3) 
  AND 
    customer_id IN (SELECT DISTINCT customer_id FROM payment_log WHERE payment_date > 2016-03-22 AND payment_type_id = 3);

您可能需要稍微嘗試一下sql語法,但是它應該可以為您提供所需的內容。

SELECT * FROM customer
WHERE id IN (
    SELECT DISTINCT L1.customer_id AS id
    FROM payment_log L1
    LEFT JOIN payment_log L2 ON L1.customer_id = L2.customer_id
    WHERE
        L1.payment_date < '2016-03-22'
    AND L2.payment_date > '2016-03-22' AND L2.payment_type_id = 3
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM