【发布时间】:2020-07-08 08:04:32
【问题描述】:
我有两个相关的表如下:
用户
user_id
用户操作
user_action_id
user_id
用户操作
每当用户执行操作时,“useractions”表中都会有一个新的插入。我需要一个查询来获取那些用户只执行特定操作集的 USERACTION 行,比如(1,2)而不是(3,4)。 所以我有一个类似的查询 -
select * from USERACTIONS where (1,2) in(select user_action from USERACTIONS where user_id=100) and user_id=100;
问题是上述查询不起作用,因为提供 (1,2) 期望子查询也返回两列,这是可以理解的。这是我得到的错误 -
错误:子查询的列太少
给一个单一的值说 (1) 或 (2) 非常有效。我想知道是否有任何方法可以使用相同的查询并将子查询的结果与多个值进行比较?我更喜欢相同的查询,因为这里演示的案例只是大型查询的一部分。
请注意,查询不应列出执行 (1,2,3,4) 的用户,应列出仅执行 (1,2) 的用户,并且 user_action 值可以是任何随机整数。
欢迎任何替代查询,但希望在同一查询中进行更改。提前致谢。
【问题讨论】:
-
外部查询中有两个
where子句。那是语法错误。 -
外查询有一个where子句,内查询有一个。
-
。 .您的查询中有三个
wheres。 -
我的错。现已编辑。感谢您指出:)
标签: mysql sql database postgresql