MySQL Rand()不在子查询中?

I have a set of tracks that need to be played, There are something like 70 tracks in the database, and my script need to generate a new ID to play in order to start the next track.

Current query: ($row['v_artist'] is the current artist playing)

SELECT *
FROM t_tracks
WHERE v_artist NOT LIKE '%".$row['v_artist']."%'
ORDER BY RAND()
LIMIT 1;

Now I wish to add a subquery to rand() so that it picks a random id, but not from the first 50 (NOT IN?)

Subquery:

SELECT *
FROM `t_playlist`
ORDER BY pl_last_played DESC
LIMIT 50, 1

How can I get a random ID from t_tracks that does not exist in the query for t_playlist?

Conceptually, I think you want this:

SELECT *
FROM t_tracks
WHERE v_artist NOT LIKE '%".$row['v_artist']."%' AND
      track_id NOT IN (SELECT track_id FROM t_playlist ORDER BY pl_last_played DESC LIMIT 50)
ORDER BY RAND()
LIMIT 1;

However, MySQL doesn't permit LIMIT in some subqueries, so use LEFT JOIN instead:

SELECT t.*
FROM t_tracks t LEFT JOIN
     (SELECT track_id
      FROM t_playlist
      ORDER BY pl_last_played DESC
      LIMIT 50
     ) p
     ON t.track_id = p.track_id
WHERE t.v_artist NOT LIKE '%".$row['v_artist']."%' AND
      p.track_id IS NULL
ORDER BY RAND()
LIMIT 1;