选择具有多个条件的同一表的查询

时间:2016-07-28 13:50:46

标签: mysql select mariadb

我的表有多次相同的origin_id,而origin_id总是有一些action_name。有37个不同的action_names,其中大多数都有一些共同的因素,如“传入”或“einvoice”等。此表还有origin_time值,所以我想将查询限制在某个时间范围内。

此时我的查询正在将所有origin_id和action_name组合在一起,因此多次使用唯一action_name存在相同的origin_id。

我尝试过使用EXISTS和其他版本,但我觉得它不能正常工作。 我甚至可以用EXISTS而不是EXISTS来做这件事吗?

为了清楚,我有这个问题:

select  companies.origin_id, actions.action_name
    from  actions
    left join  companies on companies.id = actions.company_id
    where  actions.origin_time between '2016-07-27 00:00:00.0' AND '2016-07-28 23:59:59.0'
      and  companies.active ="1"
      and  (action_name LIKE "INTERNAL"
        or  action_name LIKE "EINVOICE%"
        or  action_name LIKE "INCOMING%"
           )
    group by  companies.origin_id, actions.action_name
    order by  actions.action_name;

它给了我这个结果:

origin_id                               action_name
018a9b67-cfb3-4359-b538-d9be30eaea31    EINVOICE
018a9b67-cfb3-4359-b538-d9be30eaea31    INCOMING_BANK
018a9b67-cfb3-4359-b538-d9be30eaea31    INCOMING_EINVOICE
0070d38e-467e-4fef-920a-41facd385503    EINVOICE
0070d38e-467e-4fef-920a-41facd385503    EINVOICE_BANK
0070d38e-467e-4fef-920a-41facd385503    INCOMING_EINVOICE
0191c907-921a-4548-b6ad-ae6915b938af    EINVOICE
0191c907-921a-4548-b6ad-ae6915b938af    INCOMING_BANK
0191c907-921a-4548-b6ad-ae6915b938af    INCOMING_EINVOICE
0191c907-921a-4548-b6ad-ae6915b938af    INCOMING_EINVOICE_INTERNAL
0191c907-921a-4548-b6ad-ae6915b938af    INTERNAL
01a2115b-0d21-49f1-a0f3-7c9ddd3da50d    EINVOICE
01a2115b-0d21-49f1-a0f3-7c9ddd3da50d    INCOMING_EINVOICE
01a2115b-0d21-49f1-a0f3-7c9ddd3da50d    INCOMING_EINVOICE_INTERNAL
01a2115b-0d21-49f1-a0f3-7c9ddd3da50d    INTERNAL
....

我的问题是我需要查询,它给出了origin_id,其中包含action_name INTERNAL和EINVOICE(以及它的所有变体),但是如果origin_id也有action_name INCOMING(以及它的所有变体)我不知道想要那个origin_id,即使它有另外两个action_names。

我试过的是:

and
(action_name LIKE "INTERNAL%"
or action_name LIKE "EINVOICE%")
and action_name NOT LIKE "INCOMING%"

它有点像。它为我提供了所有包含INTERNAL和EINVOICE action_names的origin_id,并删除了INCOMING,但如果我仔细检查结果,origin_id仍然可以有action_name。

0 个答案:

没有答案