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)