sql查询提取唯一记录

时间:2015-07-17 21:10:14

标签: mysql sql-server

假设我的表只包含2个字段,ID和产品,并说我的结构看起来像这样

1 microsoft

0 cisco

2 cisco

3 vmware

0 adobe

0 microsoft

我需要编写一个查询,列出 id = 0 但仅限

的记录

0 adobe

因为miocrsoft和cisco的另外两个产品还有一个确实有ID的记录,所以我可以将它们排除在外。

我希望我清楚我想要实现的目标。如果可以在sql

中完成,请告诉我

4 个答案:

答案 0 :(得分:2)

是的,这可以使用基本聚合。请注意我如何发布耗材数据?这是你应该做的事情。创建可用数据比编写查询花了我更长的时间。

with something(Col1, Col2) as
(
    select 1, 'microsoft' union all
    select 0, 'cisco' union all
    select 2, 'cisco' union all
    select 3, 'vmware' union all
    select 0, 'adobe' union all
    select 0, 'microsoft'
)

select Col2
from something
group by Col2
having MAX(Col1) = 0

答案 1 :(得分:1)

您可以使用using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace App1 { [Activity(Label = "App1", MainLauncher = true, Icon = "@drawable/icon")] public class MainActivity : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; } } }

NOT EXISTS

Demo here

答案 2 :(得分:0)

尝试这样的事情

SELECT *
FROM table
WHERE id = 0 and product not in
(
    SELECT product
    FROM table
    WHERE id <> 0
)

答案 3 :(得分:0)

您可以使用以下代码来获得答案: 在代码的第一部分获取所有产品。 第二部分相同的产品设置了一个数组。 最后,从ID 0

的产品中删除了相同的产品

(“my database name = stackoverflow”,“my table name = stack”,“my fields = id,name”)

<?php 
$conn = mysql_connect('localhost','root','') or die ("erorr");
mysql_select_db('stackoverflow');
$query1 = "SELECT name FROM stack";
$result = mysql_query($query1);
echo "<b>Show the products:</b>";
echo "<br>";
$y;
$z;
$i = 0;
$k = 0;
while ($x = mysql_fetch_array($result)) {
    echo $x[0];
    echo "<br>";
    $y[$i] = $x[0];
    if ($i > 0) {
        for ($j=0; $j < $i; $j++) { 
            if ($y[$i] == $y[$j]) {
                if ($k > 0) {
                    for ($q=0; $q < $k; $q++) { 
                        if ($z[$q] == $y[$i]) {
                        break 2;
                        }
                    }
                }
                $z[$k] = $y[$i];
                $k++;
                break 1;
            }
        }
    }
    $i++;
}
echo "<hr>";
echo "<b>Show duplicate products:</b>";
echo "<br>";
$k=0;
while (isset($z[$k])) {
    echo $z[$k];
    $k++;
echo "<br>";
}
$query2 = "SELECT name FROM stack WHERE id=0";
$result = mysql_query($query2);
echo "<hr>";
echo "<b>Show answers:</b>";
echo "<br>";
while ($x = mysql_fetch_array($result)) {
    if (!in_array($x[0], $z)) {
    echo $x[0];
    echo "<br>";
    }
}
 ?>

但是这种反应,并没有优化和表不好的设计。因为每个表都应该有一个主键并按键搜索。