mysql-如果满足特定条件,则不显示数据

mysql-如果满足特定条件,则不显示数据,mysql,Mysql,对不起,我真的不知道如何为这个标题,因为我不能解释它真的。例如,我这里有一张桌子 c_id emp_id clinic_id 1 1 1 2 1 2 3 2 1 4 3 3 5 1 3 现在我要做一个这样的查询 select distinct * from table where clinic_id <> 1 在这一点上,我需要帮助,如果从wh

对不起,我真的不知道如何为这个标题,因为我不能解释它真的。例如,我这里有一张桌子

c_id   emp_id   clinic_id
1      1         1
2      1         2
3      2         1
4      3         3
5      1         3
现在我要做一个这样的查询

select distinct * from table where clinic_id <> 1
在这一点上,我需要帮助,如果从where clinic_id 1某个emp_id在它的条件行内,对不起,我的英语不好。例如,emp_id 1。不得同时显示所有emp_id 1。 因此,结果将是公正的

c_id   emp_id   clinic_id
4      3         3 // *The result I want*
对此,您可以使用“不存在”:

select distinct * 
from mytable as t1
where clinic_id <> 1 and 
      not exists (select 1
                  from mytable as t2
                  where t1.emp_id = t2.emp_id and t2.clinic_id = 1)
对此,您可以使用“不存在”:

select distinct * 
from mytable as t1
where clinic_id <> 1 and 
      not exists (select 1
                  from mytable as t2
                  where t1.emp_id = t2.emp_id and t2.clinic_id = 1)

对于你想要的结果,像这样的事情不是更简单吗

选择DISTINCT*FROM table WHERE clinic_id=1和emp_id=一,

这里我们要说的是,任何诊所id不是1,任何emp id也不是1

因为您使用的是PHP,所以只需用数字替换您试图不匹配的变量


选择DISTINCT*FROM table WHERE clinic_id=$会话变量和emp\U id=$对于您正在寻找的结果,有些值,像这样的东西不是更简单吗

选择DISTINCT*FROM table WHERE clinic_id=1和emp_id=一,

这里我们要说的是,任何诊所id不是1,任何emp id也不是1

因为您使用的是PHP,所以只需用数字替换您试图不匹配的变量



选择DISTINCT*FROM table WHERE clinic_id=$会话变量和emp\U id=$有些值

您可以按照从db中获取结果的顺序接受结果,或者通过order by子句强制执行您自己的顺序。您可以让客户端代码简单地吸入所有行,然后首先将它们吐出,但这不是sql问题。编辑。不仅仅是这些数据。order by在正常化环境中没有帮助。DISTINCT*是矛盾修饰法。您要么按照从db中获取结果的顺序接受结果,要么通过order by子句强制执行您自己的排序。您可以让客户端代码简单地吸入所有行,然后首先将它们吐出,但这不是sql问题。编辑。不仅仅是这些数据。在一个正常化的环境中,order by(按顺序排列)没有帮助,这是矛盾修饰法是的,我可以看到结果,它工作得很好。不过只有一个问题,我这里有很长的数据堆栈。一些诊所的id正在复制,我看不出有什么问题。你是说你必须一次检查多个诊所ID吗?然后你可以使用诊所id而不是倾斜id,诊所id1,诊所id2,。。。在main和subqueryDISTINCT*的where子句中,我认为它比group by更清楚地传达了op想要实现的目标。这也是我第一次听说DISTINCT*是一件坏事,一个解释或一篇文章/博客文章/等等。对此我非常感激。[删除错误dbms的链接]请@草莓先生告诉我们。是的,我可以看到结果,它工作正常。不过只有一个问题,我这里有很长的数据堆栈。一些诊所的id正在复制,我看不出有什么问题。你是说你必须一次检查多个诊所ID吗?然后你可以使用诊所id而不是倾斜id,诊所id1,诊所id2,。。。在main和subqueryDISTINCT*的where子句中,我认为它比group by更清楚地传达了op想要实现的目标。这也是我第一次听说DISTINCT*是一件坏事,一个解释或一篇文章/博客文章/等等。对此我非常感激。[删除到错误dbms的链接]请@草莓先生告诉我们。我用PHP编码并使用会话作为临床id,所以我不能在emp_id中输入绝对值:我用PHP编码并使用会话作为临床id,所以我不能在emp_id中输入绝对值:请问这是哪种查询?这是子查询吗?@Noobster是,不存在使用子查询。但是,一旦返回一行,子查询执行就会终止。Distinct*::-请问这是什么样的查询?这是子查询吗?@Noobster是,不存在使用子查询。但是,一旦返回一行,子查询执行就会终止。Distinct*::-
SELECT c_id, emp_id, clinic_id 
FROM clinics
WHERE clinic_id <> 1 
AND emp_id NOT IN 
    (SELECT DISTINCT emp_id 
            FROM clinics
            WHERE clinic_id = 1)
GROUP BY c_id, emp_id, clinic_id;
select distinct * 
from mytable as t1
where clinic_id <> 1 and 
      not exists (select 1
                  from mytable as t2
                  where t1.emp_id = t2.emp_id and t2.clinic_id = 1)