sql,从所选数据中插入随机数据

时间:2019-07-03 13:24:28

标签: mysql sql insert

sql,从所选数据中插入随机数据,

我在插入过程中从另一个表中获取数据,但是我只需要随机选择其中一个数据,现在我只能添加这些数据中的第一个。

MySql数据库。


$sql="INSERT INTO dal (dal.tarih,dal.tarihsonuc,
dal.fiyat,dal.kullaniciadi,dal.isim,dal.fal_konusu,
dal.cinsiyet,dal.medeni_hal,dal.is_durumu,dal.giris_id)
SELECT '2019-07-03',
'2019-07-04',
5,
'user',
'user2',
10,
0,
0,
1,
yorumlar2.id 
FROM yorumlar2 
WHERE yorumlar2.fiyat=".$_GET['fiyat']." and 
yorumlar2.cinsiyet=".$_GET['cinsiyet']." and 
yorumlar2.fal_konusu=".$_GET['fal_konusu']." and 
yorumlar2.medeni_hal=".$_GET['medeni_hal']." and 
yorumlar2.is_durumu=".$_GET['is_durumu']." and 
yorumlar2.id NOT IN(SELECT dal.giris_id FROM dal 
WHERE dal.kullaniciadi='".$_GET['kullaniciadi']."' 
and dal.fiyat=".$_GET['fiyat']." and 
dal.cinsiyet=".$_GET['cinsiyet']." 
and dal.fal_konusu=".$_GET['fal_konusu']." 
and dal.medeni_hal=".$_GET['medeni_hal']." 
and dal.is_durumu=".$_GET['is_durumu'].") limit 1";

我希望“ yorumlar2.id”随机出现。 随机只能装1件。

1 个答案:

答案 0 :(得分:0)

您可以在现有限制之前将以下内容添加到查询中,以将获取内容的顺序随机化,从而给您留下一个随机行。

ORDER BY RAND()

如果您的表包含大量行,或者您更关心性能,那么您可能想在where子句中尝试使用此方法:

AND yorumlar2.id >= RAND() * (SELECT MAX(id) FROM yorumlar2)

,并将其作为您的ORDER BY / LIMIT:

ORDER BY yorumlar2.id LIMIT 1

这将在您的最高ID下计算一个随机数,将查询限制在该ID之上的行,然后为您提供第一个,从而给您一个随机行。

您可以详细了解here