1

構造の異なる2つのテーブル、sayproperty_bidと。がありsc_property_queriesます。

sc_property_queriesproperty_bid別のテーブルと同様に値を保持します。そしてquery_method、行がどのテーブルから来たかを示す宛先テーブルで呼び出されるフィールドがあります。このフィールドraw_idは、ソーステーブルからのIDを保持します。私がやりたいのは、property_bidテーブルから選択してに挿入することですが、新しいアイテムのみを使用します。つまり、とsc_property_queriesに基づく重複を回避します。以下は、動作していないように見える私のMySQLコードですraw_idquery_method

INSERT INTO sc_property_queries (
  `property_id`,
  `raw_id`, `query_method`,
  `contact_fullname`,
  `contact_address`,
  `contact_email`,
  `contact_phone`,
  `contact_date`,
  `entry_date`,
  `title`,
  `query_status`,
  `remarks`,
  `description`
) 
SELECT 
 t1.property_id,
  t1.id,
  'web-bids',
  t1.fullname,
  'n/a',
  t1.email,
  t1.phone,
  t1.on_date,
  NOW(),
  'n/a',
  '1',
  'n/a',
  t1.comment 
FROM
  property_bid t1 
  LEFT JOIN sc_property_queries t2 
    ON (t1.id = t2.raw_id) 
WHERE  t2.query_method='web-bids' AND t2.raw_id IS NULL;

property_bidこのクエリは、sc_property_queriesに存在しないすべての行を返す必要があります。しかし、それは何もしていません。誰かがこれに光を当てることができますか?

4

2 に答える 2

1

WHERE t2.raw_id IS NULL結果セットを、に存在しないレコードのみに制限しますt2。したがってt2.*、すべてNULLです。したがって、この基準は他の基準と同時に真になることはできませんWHERE t2.query_method='web-bids'

おそらく、あなたはその基準を結合に含めるつもりでした:

FROM
  property_bid t1 
  LEFT JOIN sc_property_queries t2 
    ON (t1.id = t2.raw_id AND t2.query_method='web-bids')
WHERE t2.raw_id IS NULL
于 2012-11-27T09:57:36.373 に答える
0

JOINは必要ありません。NOTINを使用するだけです。

FROM
  property_bid t1 
  where 
   t1.id not in (select t2.raw_id from sc_property_queries t2 where t2.query_method='web-bids') 
于 2012-11-27T10:02:46.733 に答える