【发布时间】:2018-02-20 20:22:36
【问题描述】:
我需要做一个 MYSQL 查询从“table_in”中选择用户,它的格式与 table_1 相同
table_1
id Field_id user_id value
1 9 1 "hello"
2 10 1 "Multi"
3 9 2 "Something"
4 10 2 "Single"
table_2
id user_id status specs
1 1 "Busy" "this is a test"
2 2 "Idle" "this is another test"
3 2 "Busy" "another test again"
4 1 "Relaxing" "something else"
我需要从 table_in 中选择用户,其中满足以下任一条件
- table_1 field_id=10 包含“Multi”
- table_2 状态不忙
然后将结果保存在新表table_out中
所以到目前为止我得到的是这个
CREATE TEMPORARY TABLE table_out
SELECT * FROM table_1 WHERE user_id in (SELECT user_id from table_in)
AND (field_id=10 AND value='Multi')
OR (SELECT * from table_2 where status!='Busy')
我不是 SQL 专家,我上面的 MY-SQL 语句不起作用。我认为最后一个 OR 语句可能是错误的,它试图从状态不忙的 table_2 中进行选择。
所以基本上进入 table_out 的用户必须全部来自“table_in”并且要么有(字段 10 设置为多),要么是 table_2 中的同一用户(状态!=忙碌)
有人知道怎么做吗?
更新: 找到了我自己的解决方案。使用 table_in,通过仅选择那些不是“多”的值来创建第二个表,然后从查询 table_2 中将那些不忙的 user_id 放入另一个表中,然后从 table_in 中删除这些值。
还是谢谢
【问题讨论】:
-
那么,这里真的有3张桌子吗?
table_in、table_1和table_2? -
是的,table_in 包含实际用户,然后从这些用户中查看 table_1 和 table_2,查看 table_in 中的用户对应的信息是否包含字段 10=multi 或同一用户具有 table_2 状态不忙。所以你只能使用 table_in 中的 user_ids
-
因此,如果 table_in 中的用户在 table_2 中有任何“忙碌”的条目,则您无法选择它们。因此,table_in 中的用户必须在 field_id=10 中具有“multi”,或者在 table_2 中的状态为“not busy”
标签: mysql