![](/img/trans.png)
[英]Laravel: how to query a table, take the first value of from a column for each unique item_id and assign it to another table column
[英]MySQL assign a unique value from another table
我有一個我無法弄清楚的問題,我經驗不足(或者無法完成!)。
我有一個系統,我需要為每個行分配一個ID,並使用另一個表中的ID。 要注意的是,此批處理中創建的每一行的ID必須唯一。
基本上,我在Tumblr帳戶上銷售鏈接,我需要為每個客戶購買的鏈接分配一個Tumblr帳戶,但我想分配所有可能的Tumblr帳戶,以便將重復項保持在最低限度。
URL-客戶購買的每個鏈接都存儲在此表中(urls_anchors):
+----------+--------------------+------------+-----------+------+
| clientID | URL | Anchor | tumblrID | paid |
+----------+--------------------+------------+-----------+------+
| 1234 | http://example.com | Click here | 67 | Yes |
| 1234 | http://example.com | Click here | 66 | Yes |
| 1234 | http://example.com | Click here | 65 | Yes |
| 1234 | http://example.com | Click here | 64 | Yes |
+----------+--------------------+------------+-----------+------+
所有可分配的Tumblr帳戶都存儲在此表中(tumblrs):
+----------+-------------------+------------+
| tumblrID | tumblrURL | spacesLeft |
+----------+-------------------+------------+
| 64 | http://tumblr.com | 9 |
| 65 | http://tumblr.com | 9 |
| 66 | http://tumblr.com | 9 |
| 67 | http://tumblr.com | 9 |
+----------+-------------------+------------+
我對此的最佳嘗試是以下查詢:
INSERT INTO `urls_anchors` (`clientID`, `URL`,`Anchor`, `tumblrID`, `paid`) VALUES ('$clientID','$url','$line', (SELECT @rank:=@rank+1 AS tumblrID FROM tumblrs WHERE @rank < 68 LIMIT 1), 'No')
當只有X個要分配的Tumblrs時,該方法有效,但會無限期地遞增。 我需要查詢在到達Tumblrs的最后一行時返回並再次遍歷該列表。
我也在PHP腳本中使用它,我不確定這是否有意義。
任何幫助將不勝感激!
感謝您的光臨:)
您可以使用SELECT
查詢作為要插入的數據源。
INSERT INTO urls_anchors (`clientID`, `URL`,`Anchor`, `tumblrID`, `paid`)
SELECT '$clientID','$url','$line', tumblrID, 'No'
FROM tumblrs
LIMIT $number_of_rows
這將為行分配$number_of_rows
不同的tumblrID
值。
如果您需要分配比可用的更多的翻轉者ID,則需要循環執行此操作,每次從$number_of_rows
減去插入的行數。 您可以使用mysqli_affected_rows()
來找出每次插入多少行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.