Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使此SQL按最相关项排序?_Mysql_Sql - Fatal编程技术网

Mysql 如何使此SQL按最相关项排序?

Mysql 如何使此SQL按最相关项排序?,mysql,sql,Mysql,Sql,我有一个SQL语句的工作集,它在下拉场景中运行。第一个是一个包罗万象的系统,其中每个请求的选项都是匹配的。否则,它将转到基于OR的第二个sql调用 有人能给我解释一下,或者提供更好的陈述,第二层或场景是按照最相关的第一个排序的,这意味着大多数选项匹配为第一个条目,并从那里向下排列吗 或者,如果你有更好的方法来处理这个搜索,可能只需要一个调用,那就更好了 基于和的第一个SQL调用: SELECT l.id,l.title,l.city FROM listings l JOIN lis

我有一个SQL语句的工作集,它在下拉场景中运行。第一个是一个包罗万象的系统,其中每个请求的选项都是匹配的。否则,它将转到基于OR的第二个sql调用

有人能给我解释一下,或者提供更好的陈述,第二层或场景是按照最相关的第一个排序的,这意味着大多数选项匹配为第一个条目,并从那里向下排列吗

或者,如果你有更好的方法来处理这个搜索,可能只需要一个调用,那就更好了

基于和的第一个SQL调用:

SELECT 
    l.id,l.title,l.city 
FROM listings l 
JOIN listings_facilities_xref x ON l.id = x.listing_id 
WHERE l.property_type = '1' 
    AND x.facility_id = '1' 
    AND x.facility_id = '8' 
    AND x.facility_id = '54' 
    AND x.facility_id = '11' 
    AND l.city = 'Orlando' 
    AND l.state = '16' 
GROUP BY l.id
基于或的第二层调用:

SELECT l.id,l.title,l.city 
FROM listings l 
JOIN listings_facilities_xref x ON l.id = x.listing_id 
WHERE l.property_type = '1' 
AND (
    x.facility_id = '1' 
    OR x.facility_id = '8' 
    OR x.facility_id = '54' 
    OR x.facility_id = '11'
) 
AND l.city = 'Orlando' 
AND l.state = '16' 
GROUP BY l.id 
我的表格布局如下:

mysql> describe listings;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(12)      | NO   | PRI | NULL    | auto_increment |
| owner_id      | int(12)      | NO   |     | NULL    |                |
| property_type | int(12)      | NO   |     | NULL    |                |
| title         | varchar(100) | NO   |     | NULL    |                |
| description   | text         | NO   |     | NULL    |                |
| yearbuilt     | int(12)      | NO   |     | NULL    |                |
| beds          | int(11)      | NO   |     | NULL    |                |
| baths         | int(11)      | NO   |     | NULL    |                |
| sleeps        | int(11)      | NO   |     | NULL    |                |
| sqfeet        | int(12)      | NO   |     | NULL    |                |
| lotsize       | int(12)      | NO   |     | NULL    |                |
| address1      | varchar(255) | NO   |     | NULL    |                |
| address2      | varchar(255) | NO   |     | NULL    |                |
| city          | varchar(100) | NO   |     | NULL    |                |
| state         | int(12)      | NO   |     | NULL    |                |
| zipcode       | varchar(50)  | NO   |     | NULL    |                |
| latitude      | varchar(50)  | NO   |     | NULL    |                |
| longitude     | varchar(50)  | NO   |     | NULL    |                |
| created       | int(12)      | NO   |     | NULL    |                |
| updated       | int(12)      | NO   |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

mysql> describe listings_facilities_xref;
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| id          | int(12) | NO   | PRI | NULL    | auto_increment |
| listing_id  | int(12) | NO   |     | NULL    |                |
| facility_id | int(12) | NO   |     | NULL    |                |
| category_id | int(12) | NO   |     | NULL    |                |
+-------------+---------+------+-----+---------+----------------+
示例导入数据可在以下位置找到:

清单:


清单\u设施\u外部参照:

我怀疑您想要:

SELECT l.id, l.title, l.city 
FROM listings l 
JOIN listings_facilities_xref x ON l.id = x.listing_id 
WHERE l.property_type = 1 AND
      x.facility_id IN (1, 8, 54, 11) AND
      l.city = 'Orlando' AND
      l.state = 16 
GROUP BY l.id, l.title, l.city
ORDER BY COUNT(*) DESC;

具有和的版本将永远不会返回任何行。第一个查询将始终失败。没有哪一行的设备id是1号、11号和5号戈登,瓦利:我现在明白了,谢谢。时间太多了。