mysql - 如果满足某个条件,则不显示数据

时间:2016-07-04 17:36:09

标签: 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

结果将是

c_id   emp_id   clinic_id
2      1         2
4      3         3
5      1         3

此时我需要帮助,如果来自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*

3 个答案:

答案 0 :(得分:1)

您可以使用//*[text()[contains(.,'shetty ruat pravin')]]

NOT EXISTS

答案 1 :(得分:0)

对于你正在寻找的结果,这样的事情会不会更简单?

SELECT DISTINCT * FROM table WHERE clinic_id !=1 AND emp_id !=1

这里我们说我们想要任何不是1的clinic_id和任何也不是1的emp_id。

由于您正在处理PHP,因此您只需将数字替换为您尝试不匹配的变量。

SELECT DISTINCT * FROM table WHERE clinic_id !=$session_variable AND emp_id !=$some_value

答案 2 :(得分:-1)

SELECT DISTINCT * 
FROM table
WHERE clinic_id <> 1 
AND emp_id NOT IN 
    (SELECT DISTINCT emp_id 
            FROM table
            WHERE clinic_id = 1)

试试这个。

它使用子查询返回与emp_id列中的1位于同一行的clinic_id,并将其从结果集中删除,因为您也不希望这些emo_id 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; 1}} S上。

您也可以使用GROUP BY子句而不是DISTINCT。如果您没有使用任何聚合函数,通常GROUP BY将被数据库转换为不同的,但有时它们的行为会有所不同。如果您对此主题感兴趣,还可以看到以下问题:Is there any difference between GROUP BY and DISTINCT

function ovpnParser($con, $pathlog){
$inclients = false;
$handle = fopen($pathlog, "r");
$inclients = false;
$sql2 = "SELECT comName FROM vpn";
$query2 = mysqli_query($con, $sql2);


while(!feof($handle)){
$line = fgets($handle, 4096);

if (substr($line, 0, 11) == "CLIENT_LIST")
 {
   if (preg_match("/CLIENT_LIST\t{1,}UNDEF(.*)UNDEF/", $line))
   {
     $inclients = false;
   }
   else
   {
    $inclients = true;
   }
 }
 if ($inclients)
 {
  preg_match("/CLIENT_LIST(.*)UNDEF/", $line, $conteudo);

  $partes = preg_split("/\t{1,}/", trim($conteudo[1]));

  $sql            = "SELECT comName FROM vpn
                     WHERE  comName = '{$partes[0]}'";
  $query          =  mysqli_query($con, $sql);
  $numeroDeLinhas =  mysqli_num_rows($query);

  if ($numeroDeLinhas == 0)
    {
    $sql = "INSERT INTO vpn (comName, realAddr, virtAddr, byR, byS, since, sinstamp, blockstatus)
            VALUES ('{$partes[0]}', '{$partes[1]}', '{$partes[2]}', '{$partes[3]}', '{$partes[4]}', '{$partes[5]}', '{$partes[6]}', 'true')";
    $query = mysqli_query($con, $sql);
    }
 }
 $inclients = false;
}
}