Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可以创建这样的MySQL查询吗?_Mysql_Sql - Fatal编程技术网

可以创建这样的MySQL查询吗?

可以创建这样的MySQL查询吗?,mysql,sql,Mysql,Sql,我有两张桌子。我想创建一个查询,它返回一个表中的所有行,其中表中列的整数值之和小于特定值 想象一下这些桌子是这样的: 账户: 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..... 历史记录: USERID | VALUE

我有两张桌子。我想创建一个查询,它返回一个表中的所有行,其中表中列的整数值之和小于特定值

想象一下这些桌子是这样的:

账户

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.....
历史记录

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  

我想
从Accounts
中选择Accounts.*但条件是,例如,对于每个
userid
列小于例如
30000
。这在MySQL中可能吗?谢谢。

你想要什么

select a.*
from accounts a
where not exists (select 1
                  from history h
                  where h.userid = a.userid and h.value >= 30000
                 );

您提到
列的
小于30000,对吗

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

您可以使用以下查询:

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

希望它对您有所帮助。

历史记录中没有重复项。那么,什么是“整数值之和”?请更具体一些,编辑你的问题。是的,我做了,谢谢。不过我有一个问题,我试图使用您建议的第一个查询,但我想在内部select语句中添加另一个条件,即date>=date\u SUB(CURDATE(),INTERVAL 0 DAY),因为我只从当天的和中提取。但是,当我添加此项时,没有返回任何行。由于我今天没有添加任何行,总和应该等于0,这将小于30000,因此应该返回给我所有用户/帐户行@对于Pasno,你不能通过在那里应用这个条件来做到这一点。条件
date>=date\u SUB(CURDATE(),INTERVAL 0 DAY)
不会对不存在的行的列
value
求和,因此不会得到结果0。如果不存在,是否可以将其设置为零?修复了,我在select语句中使用了一个案例。
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
)
select accounts.* from accounts inner join history on history.userid = accounts.userid where history.value >= 30000