MySQL反向从2个表中选择结果

时间:2017-10-13 02:52:29

标签: mysql sql

我有2个表我想找到不匹配的结果:

    table1

    REF    CARD   AMOUNT
    12345  55432  1000
    23456  55321  2000
    34567  55789  3000


    table2

    MSG                AMT    ID
    12345_T1R3-55432   1000   456
    23456-R1M5-55321   2000   567
    34567*O1L@-13123   5000   783

我的查询:

SELECT
  'table1'.'REFF',
  'table2'.'MSG',
  'table1'.'card',
  'table1'.`amount`,
  'table2'.'amt'
FROM
  'table1',
  'table2'
WHERE
  'table2'.'MSG' LIKE CONCAT('%', 'table1'.'REFF', '%') AND 'table2'.'MSG' LIKE CONCAT('%', 'table1'.'card', '%')

QUERY RESULT

table1.reff    table2.msg          table1.card   table1.amount   table2.amt
12345          12345_T1R3-55432    55432         1000            1000
23456          23456-R1M5-55321    55321         2000            2000

我想从这个结果得到另一个结果(反向),如:

table1.reff    table2.msg          table1.card   table1.amount   table2.amt
34567          34567*O1L@-13123    55789         3000            5000   

谢谢

1 个答案:

答案 0 :(得分:0)

P And Q的反面是not P or not Q。因此,将此应用于您的查询会产生:

SELECT
    t1.REFF,
    t1.MSG,
    t1.card,
    t1.amount,
    t2.amt,
FROM table1 t1
LEFT JOIN table2 t2
    ON t2.MSG LIKE CONCAT('%', t1.REFF, '%') AND
       t2.MSG LIKE CONCAT('%', t1.card, '%')
WHERE
    t2.MSG IS NULL;

顺便说一句,你使用单引号是完全错误的。你发布的查询可能甚至都没有运行,所以我猜你也许你错误地复制了它。