Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 从表中获取两个变量位于同一列中的所有行_Mysql_Sql - Fatal编程技术网

Mysql 从表中获取两个变量位于同一列中的所有行

Mysql 从表中获取两个变量位于同一列中的所有行,mysql,sql,Mysql,Sql,我需要从一个同时具有城市id(比如7333和10906)的表中获取所有公司id,但id不能按我的方式工作 这是我的桌子: 这是我的密码 SELECT `company_id` as id FROM `logistics_companies_destinations` WHERE `city_id`= 7333 and `city_id` = 10906 MySQL没有INTERSECT关键字,但实现这一点的一种方法是: SELECT `company_id` as

我需要从一个同时具有城市id(比如7333和10906)的表中获取所有公司id,但id不能按我的方式工作

这是我的桌子:

这是我的密码

   SELECT `company_id` as id 
   FROM `logistics_companies_destinations` 
   WHERE `city_id`= 7333 and `city_id` = 10906

MySQL没有
INTERSECT
关键字,但实现这一点的一种方法是:

   SELECT `company_id` as id 
   FROM `logistics_companies_destinations` 
   WHERE 
        `city_id` = 10906
        and `company_id` IN (SELECT `company_id` as id 
                             FROM `logistics_companies_destinations` 
                             WHERE `city_id`= 7333)

[另一种方法(如另一张海报所述)是两次连接到表,并对每个连接应用一个筛选条件]。

MySQL没有
INTERSECT
关键字,但实现这一点的一种方法是:

   SELECT `company_id` as id 
   FROM `logistics_companies_destinations` 
   WHERE 
        `city_id` = 10906
        and `company_id` IN (SELECT `company_id` as id 
                             FROM `logistics_companies_destinations` 
                             WHERE `city_id`= 7333)

[另一种方法(如另一张海报所述)是两次加入表,并对每个加入应用一个筛选条件]。

我认为您的问题是“和”。如果城市id等于“7333”和“10906”,则您正在寻找公司id。使用or应该会起作用。

我相信你的问题在于“和”。如果城市id等于“7333”和“10906”,则您正在寻找公司id。使用or应该会起作用。

您也可以使用表本身的
内部联接来解决此问题,使用相同的
公司id
联接,并要求两个城市id都存在:

SELECT
        `lcd1`.`company_id` AS id 
   FROM `logistics_companies_destinations` AS lcd1
   INNER JOIN `logistics_companies_destinations` AS lcd2
   WHERE `lcd1`.`city_id`= 7333 AND `lcd2`.`city_id` = 10906

对不起,我通常也不赞成这样愚蠢地缩写表名,但没有想出更好的别名;)

您还可以使用表本身的
内部联接来解决此问题,在相同的
公司id上联接,并要求两个城市id都存在:

SELECT
        `lcd1`.`company_id` AS id 
   FROM `logistics_companies_destinations` AS lcd1
   INNER JOIN `logistics_companies_destinations` AS lcd2
   WHERE `lcd1`.`city_id`= 7333 AND `lcd2`.`city_id` = 10906


对不起,我通常也不赞成这样愚蠢地缩写表名,但没有想出更好的别名;)

city\u id
不能同时是两个值。是的,我知道了,但解决方法是什么。
city\u id
不能同时是两个值。是的,我知道了,但解决方法是什么。OP希望两个city\u id都出现的公司,而不是至少有一个city\u id出现的公司does@DrCopyPaste 正如Siyual所说,city_id不能等于7333和10906。所以答案是正确的。OP需要或,而不是和。请再次阅读问题的第一句话,它没有说同时具有城市ID的行
,而是说
公司
,正如您从示例数据中看到的,一家公司可以在表格的不同行中多次出现;)OP希望两个city_id都出现的公司,而不是至少有一个city_id出现的公司does@DrCopyPaste正如Siyual所说,city_id不能等于7333和10906。所以答案是正确的。OP需要或,而不是和。请再次阅读问题的第一句话,它没有说同时具有城市ID的行
,而是说
公司
,正如您从示例数据中看到的,一家公司可以在表格的不同行中多次出现;)哪一个更好?使用内部联接还是使用嵌套sql查询?“哪一个更好”-更容易理解并且最清楚地显示意图的一个。我更喜欢join技巧,但我认为初学者觉得subselect/IN更容易理解。执行计划应该是相同的。是的,我认为这些计划应该是完全相同的,但是我没有在这里运行MySQL,所以我不能肯定。但除此之外,我更喜欢连接而不是嵌套查询,因为它们更易于阅读,并节省大量缩进空间;)非常感谢你们两位:)哪一个更好?使用内部联接还是使用嵌套sql查询?“哪一个更好”-这一个更容易理解并且最清楚地显示了意图。我更喜欢join技巧,但我认为初学者觉得subselect/IN更容易理解。执行计划应该是相同的。是的,我认为这些计划应该是完全相同的,但是我没有在这里运行MySQL,所以我不能肯定。但除此之外,我更喜欢连接而不是嵌套查询,因为它们更易于阅读,并节省大量缩进空间;)非常感谢你们两位:)哪一个更好?使用内部联接还是使用嵌套sql查询?“哪一个更好”-这一个更容易理解并且最清楚地显示了意图。我更喜欢join技巧,但我认为初学者觉得subselect/IN更容易理解。执行计划应该是相同的。@MitchWheat只有一个愚蠢的问题来完成这个问题,你这次展示嵌套查询方法是因为你想让它对初学者友好吗?(正如您所说,您更喜欢连接自己……)使用内部连接还是使用嵌套sql查询,哪一个更好?“哪一个更好”—更容易理解并最清楚地显示意图。我更喜欢join技巧,但我认为初学者觉得subselect/IN更容易理解。执行计划应该是相同的。@MitchWheat只有一个愚蠢的问题来完成这个问题,你这次展示嵌套查询方法是因为你想让它对初学者友好吗?(正如你说的你更喜欢自己…)