簡體   English   中英

使用聯接從一個MYSQL表中選擇隨機行

[英]Select random rows from one MYSQL table with join

下午的人們,

我已經四處挖掘,找不到答案,所以是時候問了!

我想從一個表中選擇隨機行,然后從另一個表中加入我具有相同ID的該隨機行。 僅選擇我在第二張表中的位置也是很好的選擇。 我已經嘗試過各種方式的子查詢,但是有點迷路了。 讀取的內部聯接將完成此操作,但是再次具有全部隨機性! 哎呀...

SELECT
  tracks.track_id,
  cuttings.square_cutting,
  cuttings.cutting_2,
  cuttings.cutting_3,
  cuttings.blog_text 
FROM tbl_tracks tracks,
(SELECT 
    square_cutting,
    cutting_2,
    cutting_3,
    blog_text 
  FROM
    tbl_cuttings
  WHERE track_id = tracks.track_id <-- wont find it, obviously!!
  ORDER BY RAND() 
  LIMIT 1) cuttings
WHERE tracks.active = '1' ORDER BY RAND()

在此先感謝您的幫助。

所以:我想要顯示軌道ID的隨機軌道->帶有隨機剪切,其中可以有很多,但我只想要1。

這樣,僅在與該音軌相關聯的切割時才顯示結果將是理想的。

希望能有所幫助。

我現在正嘗試進一步,並通過RAND()種子對其進行排序,因為我現在必須添加分頁。 唯一的問題是由於給定的種子,它沒有給我返回相同的隨機列表。 有任何想法嗎?

SELECT
  tracks.track_id,
  cuttings.square_cutting,
  cuttings.cutting_2,
  cuttings.cutting_3,
  cuttings.blog_text
FROM tbl_tracks tracks
INNER JOIN
  (SELECT track_id,
    square_cutting,
    cutting_2,
    cutting_3,
    blog_text
    FROM
    tbl_cuttings
ORDER BY RAND()) cuttings ON tracks.track_id = cuttings.track_id
WHERE tracks.active = '1'
ORDER BY RAND(1)
LIMIT 0,4;

您可以使用內部聯接

  SELECT
    tracks.track_id,
    cuttings.square_cutting,
    cuttings.cutting_2,
    cuttings.cutting_3,
    cuttings.blog_text 
  FROM tbl_tracks tracks
  INNER JOIN 
  (SELECT track_id,
      square_cutting,
      cutting_2,
      cutting_3,
      blog_text 
    FROM
      tbl_cuttings
     ORDER BY RAND() 
    LIMIT 1) cuttings on cuttings.track_id = tracks.track_id
  WHERE tracks.active = '1' 
  ORDER BY RAND()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM