2

、、、inの列col1がありcol2、 1つの列のみcol3限定された値を出力する必要があるとします 。 col4myTable

したがって、上記のように見える場合

  col1    col2    col3    col4
  s        e       c        b 
  c        c       a        s
  n        s       e        a
  d        d       q        c

その場合、出力はそれぞれ、、およびにのみ排他的であるため、 n、qbになります。col1col3col4

mysql phpのクエリを使用してこれを実現するにはどうすればよいですか?

編集重複は単一の行にある必要はありません。明確にするために、テーブルのレイアウトを変更しました。

4

4 に答える 4

1

SQLのみのソリューションを探している場合は、次のように列ごとにクエリを実行できます。

SELECT 
    col1 AS unique_on_col1
FROM table
WHERE     col1 NOT IN (SELECT col2 FROM table)
      AND col1 NOT IN (SELECT col3 FROM table)
      AND col1 NOT IN (SELECT col4 FROM table)

4つのクエリすべてをで組み合わせることUNIONができますが、データをどのように処理するかによっては、それが必要ない場合もあります。また、このクエリは、大規模なデータセットではうまく機能しないはずです。

于 2012-05-03T01:05:30.653 に答える
1

それらすべてを一度に取得するもう少しコンパクトな方法:

select distinct col1 
  from myTable 
 where col1 not in (select a.col1 
                     from myTable a join myTable b 
                       on a.col1 = b.col2 or a.col1=b.col3 or a.col1=b.col4)
 union
select distinct col2 
  from myTable 
 where col2 not in (select a.col2 
                     from myTable a join myTable b 
                       on a.col2 = b.col1 or a.col2=b.col3 or a.col2=b.col4)
 union
select distinct col3 
  from myTable 
 where col3 not in (select a.col3 
                     from myTable a join myTable b 
                       on a.col3 = b.col1 or a.col3=b.col2 or a.col3=b.col4)
 union
select distinct col4 
  from myTable 
 where col4 not in (select a.col4 
                     from myTable a join myTable b 
                       on a.col4 = b.col1 or a.col4=b.col2 or a.col4=b.col3)
于 2012-05-03T01:10:59.543 に答える
0
$sql = "
    SELECT DISTINCT 'col1' as descr,col1 as val FROM myTable
    UNION
    SELECT DISTINCT 'col2' as descr,col2 as val FROM myTable
    UNION
    SELECT DISTINCT 'col3' as descr,year as val FROM myTable";

$result = @mysql_query($sql, $con) or die(mysql_error());

while($row = mysql_fetch_array($result)) {
    $make_array[$row['descr']][]=$row['val'];
} 

これでうまくいくと思います。コードを試してみてください。ただし、これを試して、お知らせください。

于 2012-05-03T00:49:16.227 に答える
0

これを試して:

SELECT col1 AS unique_on_col1
FROM table
WHERE col1 NOT IN (SELECT col2 FROM table)
  AND col1 NOT IN (SELECT col3 FROM table)
  AND col1 NOT IN (SELECT col4 FROM table)
于 2012-05-03T10:55:17.257 に答える