sql, вставить случайные данные из выбранных данных - PullRequest
1 голос
/ 03 июля 2019

sql, вставить случайные данные из выбранных данных,

Я получаю данные из другой таблицы в процессе вставки, но мне нужно только выбрать один из этих данных случайным образом, теперь я могу добавить только первый изэти данные.

MySql DB.


$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 голосов
/ 03 июля 2019

Вы можете добавить следующее к вашему запросу до существующего лимита, чтобы рандомизировать порядок, в котором они будут выбраны, оставив вам одну случайную строку.

ORDER BY RAND()

Если ваша таблица содержит большое количество строк или вас больше беспокоит производительность, то вы можете попробовать это вместо этого в предложении where:

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

и это как ваш ORDER BY / LIMIT:

ORDER BY yorumlar2.id LIMIT 1

Это вычислит случайное число под вашим самым высоким идентификатором, ограничит ваш запрос строками выше этого идентификатора, а затем даст вам первый, оставив вам одну случайную строку.

Вы можете увидеть это объяснено подробно здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...