温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mysql - sql, insert random data from selected data

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

发布于 2020-03-27 10:26:06

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个。

查看更多

查看更多

提问者
roottoor
被浏览
60
reembank 2019-07-03 21:49

您可以在现有限制之前将以下内容添加到查询中,以随机提取它们的获取顺序,只剩下一个随机行。

ORDER BY RAND()

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

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

这是您的ORDER BY / LIMIT:

ORDER BY yorumlar2.id LIMIT 1

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

您可以在此处查看详细解释

发布
问题

分享
好友

手机
浏览

扫码手机浏览