后续:mySQL SELECT帮助。 IF还是EXISTS?

时间:2015-02-27 18:38:36

标签: mysql

之前我在这个问题mySQL SELECT help. IF or EXISTS?上得到了帮助,现在我有一个跟进问题。这是表格结构:

<code>
* user
user_id
name

* client
client_id
name

* user_client
user_client_id
user_id
client_id
</code>

现在我不想加入任何其他表,我只想提取权限,结果集应返回用户允许的客户端或所有客户端ID(如果用户存在)以及是否存在& #39;在user_client上没有该用户的条目。这意味着如果user_client上的user_id没有行,则他可以访问所有客户端。

我无法弄清楚如何在没有表格加入的情况下使其工作,就像我在上一个问题上那样(在那种情况下是消息)

谢谢你们!

编辑: 好的,试着更好地解释一下: 让我们对我有桌子说

<code>
user_id 
1
2
3

client_id
10
11
12
13
14

On user_client table
user_id    client_id
1          11
1          13
3          14
3          10
</code>

我希望结果如下: 如果user_id为1,则其结果集包含11和13。 如果user_id为3,则其结果集将包含14,10。 如果user_id为2,则其结果集包含10,11,12,13和14。

我希望我能更好地解释。

1 个答案:

答案 0 :(得分:1)

您应该在问题中提供更多详细信息,以便人们真正了解您的需求。

无论如何,查询非常简单。只需从previous question获取查询并删除不必要的连接。

 SELECT client_id
   FROM user_client
  WHERE user_id = :user_id

 UNION

 SELECT client_id
   FROM client
   JOIN `user` U
  WHERE U.id = :user_id
    AND NOT EXISTS (
            SELECT *
              FROM user_client
             WHERE user_id = U.id
      )