Как мы можем назначить значение в запросе, что мне нужно предположим, что я пишу запрос для результата результата, используя совпадение с я получаю кучу результата, как
http://www.flipkart.com/account.phpи т.д...... Что я прошу. мне нужно всего 2 результата от каждого домена. Могу ли я использовать это как
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
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/ его следует избегать.
Могу ли я написать запрос для этого? Как вы можете, ребята, дать мне пример?
Задача извлечь доменное имя из 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
Я бы разделил 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
}
Возможно, вы также можете использовать некоторые соединения, чтобы сделать то же самое, но я не уверен, как это сделать с моей головы.