Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 - Fatal编程技术网

Mysql 如何从两个表中获取数据

Mysql 如何从两个表中获取数据,mysql,Mysql,我有两张桌子 表A imei_no | user_name | date_of_allocation | date_of_deallocation 123 | a | 1-4-2013 | 10-4-2013 456 | a | 10-4-2013 | 25-4-2013 789 | a | 25-4-2013

我有两张桌子

表A

  imei_no | user_name | date_of_allocation | date_of_deallocation
     123  |    a      |      1-4-2013      |         10-4-2013         
     456  |    a      |     10-4-2013      |         25-4-2013
     789  |    a      |     25-4-2013      |         30-4-2013
     123  |    b      |     25-4-2013      |         27-4-2013
表B

  imei | lat | long |     gpsdate
   123 | 23  |  43  |     2-4-2013
   123 | 23  |  43  |     2-4-2013
   456 | 23  |  43  |     3-4-2013
   123 | 23  |  43  |     3-4-2013
   789 | 23  |  43  |     24-4-2013
   123 | 23  |  43  |     24-4-2013
   456 | 23  |  43  |     28-4-2013
   123 | 23  |  43  |     28-4-2013
我想要一个特定用户的imei,比如从2013年4月5日到2013年4月25日 我正在这样做:

select imei from A where user_name='a' and date_of_allocation>='5-4-2013' and date_of_deallocation<='25-4-2013';

您可以在表单中使用子查询

SELECT * FROM B WHERE imei IN ( SELECT imei_no FROM A WHERE .... )
您也可以使用“加入”

SELECT * FROM A LEFT JOIN B ON (A.imei_no = B.imei) WHERE ...

有许多可能的选择,取决于您的特定应用程序、表的大小等。

试试看

SELECT A.*,B.lat,B.long,B.gpsdate 
FROM A
JOIN B 
    ON A.imei_no = B.imei
WHERE user_name='a' AND
      date_of_allocation >= '5-4-2013' AND
      date_of_deallocation <= '25-4-2013'
选择A.*、B.lat、B.long、B.gpsdate
从
加入B
关于A.imei_no=B.imei
其中user_name='a'和
分配日期>='5-4-2013'和
解除分配日期类似

select * from B where imei in 
    (select imei_no from A where username='a' and ...)
也可以使用连接:

select * from A left join B on (A.imei_no = B.imei) where A.username='a' and ...

我做了第一个,但在这种情况下,表b中也有b的数据,当然有这样的数据-如果a和b有相同的imei,你怎么能区分它们?您忘了添加,我想您还希望gpsdate用于过滤
select * from A left join B on (A.imei_no = B.imei) where A.username='a' and ...