Можно ли создать запрос MySQL, как это? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть две таблицы.Я хотел бы создать запрос, который возвращает все строки из одной таблицы, где сумма целочисленных значений из столбца в таблице меньше, чем конкретное значение.

Представьте, что таблицы выглядят следующим образом:

Accounts:

USERID | STATUS | LAST_LOGIN_DATE | etc......
4594 . 1 . XX/XX/XX 00:00:00 . etc.....
2414 . 1 . XX/XX/XX 00:00:00 . etc.....
1894 . 1 . XX/XX/XX 00:00:00 . etc.....

History:

USERID | VALUE | DATE
4594 .   10000 . XX/XX/XX 00:00:00  
2414 .   10000 . XX/XX/XX 00:00:00  
1894 .   10000 . XX/XX/XX 00:00:00  
6974 .   10000 . XX/XX/XX 00:00:00  
3491 .   10000 . XX/XX/XX 00:00:00  
1590 .   10000 . XX/XX/XX 00:00:00  
6554 .   10000 . XX/XX/XX 00:00:00  

Я бы хотел SELECT Accounts.* FROM Accounts но при условии, что, например, для каждого userid столбец value меньше, чем, например, 30,000.Это возможно в MySQL?Спасибо.

Ответы [ 3 ]

0 голосов
/ 24 февраля 2019

Вы упоминаете, что sum столбца value меньше 30000, верно?

select a.*
from accounts a
where (
  select sum(h.value)
  from history h
  where h.userid = a.userid
) < 30000

или:

select a.*
from accounts a inner join (
  select userid
  from history
  group by userid
  having sum(value) < 30000
) t on t.userid = a.userid

Редактировать :Чтобы применить второе условие для даты:

select *
from accounts 
where userid not in (
  select userid
  from history
  where date >= date_sub(curdate(), interval 0 day)
  group by userid
  having sum(value) >= 30000
)
0 голосов
/ 24 февраля 2019

Вы можете использовать ниже запрос:

select accounts.* from accounts inner join history on history.userid = accounts.userid where history.value >= 30000

Надеюсь, это поможет вам.

0 голосов
/ 24 февраля 2019

Является ли not exists тем, что вы хотите?

select a.*
from accounts a
where not exists (select 1
                  from history h
                  where h.userid = a.userid and h.value >= 30000
                 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...