0

あるテーブル(tableA)からvalues(field1)を取得し、別のテーブル(tableB)からvalues(Field 2)を取得して、それらを比較するmySQLデータベースがあります。テーブルAのフィールド1がテーブルBのフィールド2で見つかった場合、それらを選択から除外する必要があります。

SELECT task_name, tasks.task_id
FROM tasks
INNER JOIN custom_fields_values ON value_object_id <>task_id

これは私が試したものですが、うまくいかないようです。task_idが3重に表示されますが、これは奇妙なことです。Value_object_idにはフィールド24と32の2つしかありません。task_idの番号は1〜40です。基本的に、フィールド値24と32のない1〜40のリストが必要です。

SELECT task_name, tasks.task_id
FROM tasks
INNER JOIN custom_fields_values ON value_object_id =task_id

ただし、これは正常に機能します。

4

2 に答える 2

2

--を使用しているためです。代わりにINNER JOINを使用してみてください。LEFT JOIN

SELECT tasks.task_name, tasks.task_id
FROM tasks
LEFT JOIN custom_fields_values ON custom_fields_values.value_object_id=tasks.task_id
WHERE custom_fields_values.value_object_id IS NULL

幸運を。

于 2013-01-28T18:54:07.263 に答える
1

アンチセミジョインが必要です:

SELECT task_name, task_id
FROM tasks AS t
WHERE NOT EXISTS
      ( SELECT *
        FROM custom_fields_values AS c
        WHERE c.value_object_id = t.task_id
      ) ;
于 2013-01-28T18:54:58.613 に答える