where is the fault in my sql code?

2019-01-15 22:40发布

问题:

'SELECT * FROM t1
          JOIN t2 ON t1.wid = t2.wid
          WHERE t2.wid IS NULL
          LIMIT ' . $number;

This code nothing returns to me could you help why i do not take values back??

回答1:

JOIN t2 ON t1.wid = t1.wid

did you mean that? or do you really mean t1.wid = t2.wid? in which case you'd want a left join.

EDIT

Okay, so you fixed it. That won't show up any results unless there are rows in t2 that have a wid that matches a row in t1 with the same wid.

If you want results, change it to this:

'SELECT * FROM t1
          LEFT JOIN t2 ON t1.wid = t2.wid
          WHERE t2.wid IS NULL
          LIMIT ' . $number;

NEXT EDIT

If the goal is to update t2 with values from t1 that aren't ALREADY in t2, then it would be something like this:

'INSERT INTO t2 
   SELECT t1.* FROM t1
     LEFT JOIN t2 
        ON t1.wid = t2.wid
     WHERE t2.wid IS NULL
     LIMIT ' . $number;

The missing step was simply to return only t1's results, and then insert them into t2.



回答2:

I think you have a typo.

'SELECT * FROM t1
              JOIN t2 ON t1.wid = t2.wid
              WHERE t2.wid IS NULL
              LIMIT ' . $number;