1

我有 2 表如下所示,

coin
----
chanceNo
userID
coin_code
date

coin2
----
chanceNo
userID
coin_code
date

我的查询查找“12345”在哪个表的位置,如下所示(这是正确且成功的搜索和匹配),

SELECT coin_code from coin WHERE coin_code='12345' UNION 
Select coin_code from coin2 WHERE coin_code='12345';

但是,我坚持在搜索后更新查询。找到 coin_code='12345' 后如何更新。

我知道基本的更新查询是这样的,

UPDATE coin2 SET userID='name', date='12-12-12' WHERE coin_code='12345'

但是,如果“12345”在另一张桌子上怎么办,硬币?我可以知道,如何编写这个查询?

4

2 回答 2

2

此查询将告诉您在哪个表中找到了 coin_code:

SELECT "coin" which_table, coin_code
FROM coin
WHERE coin_code = '12345'
UNION
SELECT "coin2" which_table, coin_code
FROM coin2
WHERE coin_code = '12345'

现在您有了表名,您可以将其替换为 UPDATE 查询:

$row = mysqli_fetch_assoc($sel_stmt);
$upd_stmt = mysqli_prepare("UPDATE {$row[which_table]} SET userID = ?, date = ? WHERE coin_code = ?");
于 2012-10-25T05:24:18.343 回答
1

扩展 Barmar 的答案,你可以做这样的事情,

$sql="SELECT 'coin' which_table, coin_code
      FROM coin
      WHERE coin_code = '12345'
      UNION
      SELECT 'coin2' which_table, coin_code
      FROM coin2
      WHERE coin_code = '12345'";
$result = mysqli_query($sql);
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){

     //Now updating the table
     $sql_update = "UPDATE {$row['which_table']} SET userID='name', date='12-12-12' 
               WHERE coin_code='{$row['coin_code']}'";
     mysqli_query($sql_update);
}
于 2012-10-25T05:36:24.310 回答