Как мы можем присвоить значение в запросе MySQL

0

Как мы можем назначить значение в запросе, что мне нужно предположим, что я пишу запрос для результата результата, используя совпадение с я получаю кучу результата, как

 http://www.flipkart.com/account.php 
http://www.thomas.com/account.php
http://www.flipkart.com/account22.php
http://www.flipkart.com/account45.php
http://www.thomas.com/account22.php
http://www.thomas.com/account45.php
и т.д...... Что я прошу. мне нужно всего 2 результата от каждого домена. Могу ли я использовать это как
Step 1:Set DomainName=http://www.flipkart.com/ and Let Rank =0
Step 2:DomainNameofResult= DomainNameofR(http://www.flipkart.com/account.php)
(finding the domain name of result using substring or regular expression) Step 3:if DomainName=DomainNameofResult then Add the http://www.flipkart.com/account.php to result and set rank =1 else avoid the current domain

И снова начните с шага 1 при перезапуске, если http://www.flipkart.com/account22.php приходит, На шаге 3 Добавьте http://www.flipkart.com/account22.php в результат и установить ранг = 2 после того, как ранг установлен на 2, если какой-либо другой результат пришел с именем домена http://www.flipkart.com/ его следует избегать.

Могу ли я написать запрос для этого? Как вы можете, ребята, дать мне пример?

Теги:

2 ответа

0

Задача извлечь доменное имя из URL-адреса является самой большой проблемой и будет более результативной, если вы могли бы добавить новый столбец в таблицу - domain или аналогичный. В будущем это упростит запросы. Вы даже можете использовать следующую функцию для UPDATE в этом новом столбце, если это возможно.

Запрет на то, что реализовать определенную пользователем функцию в MySQL, аналогично этому из Как проанализировать доменное имя из URL с помощью SQL ".

CREATE FUNCTION `extract_domain_from_url`(url VARCHAR(5000)) RETURNS varchar(500)
BEGIN

   DECLARE output_domain VARCHAR(500);

   --implementation
   RETURN output_domain;

END

Как только вы это сделаете, (при условии, что у вас есть идентификатор или что-то еще, что судит заказ):

SELECT *
FROM     MyTable AS o
WHERE 
        (SELECT  COUNT(*) 
        FROM     MyTable 
        WHERE    extract_domain_from_url(url) =extract_domain_from_url(o.url)
        AND      id >= o.id) <= 2
ORDER BY url
0

Я бы разделил URL-адрес на несколько полей для этого. Вероятно, "домен" и "путь"

Это даст вам следующее

domains_table

domain           | path
-----------------+-------------
www.flipkart.com | /account.php 
www.thomas.com   | /account.php
www.flipkart.com | /account22.php
www.flipkart.com | /account45.php
www.thomas.com   | /account22.php
www.thomas.com   | /account45.php

Теперь вы можете делать такие вещи, как:

SELECT DISTINCT domainname FROM domain_tables

Далее следует цикл (если PHP - ваш конечный язык):

foreach($domain as $d){
    mysql_query("SELECT CONCAT("http://",domain,path) as url FROM domains_table WHERE domain=? LIMIT 2", $d);
     //Then store the result somewhere
}

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

  • 0
    Спасибо за ответ, у меня уже есть около 275000 строк в БД, я беру каждую и меняю значения непросто

Ещё вопросы

Сообщество Overcoder
Наверх
Меню