Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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,但其中一个表的记录比另一个多,因此内部联接不起作用。 我的查询结果仅显示两个表的公共记录: t1: --------------------- id, data ---------------------- 1,aaa 2,bbb 4,ccc t2: ------------------- id ------------------- 1 2 3 4 5 jo

我有两个表具有相同的键id,但其中一个表的记录比另一个多,因此内部联接不起作用。 我的查询结果仅显示两个表的公共记录:

   t1:
   ---------------------
   id, data
   ----------------------
   1,aaa
   2,bbb
   4,ccc


   t2: 
   -------------------
   id
   -------------------
   1
   2
   3
   4
   5

   join result :
   -------------------
   1,aaa
   2,bbb
   3,null
   4,ccc
   5,null

此查询不执行以下任务:

$query=" SELECT t2.id, t1.data FROM table1 t1
         INNER JOIN table2 t2
         ON t1.id = t2.id
         ORDER BY t2.id     " ;
请试试这个

$query=" SELECT t2.id, t1.data FROM table1 t1
         RIGHT JOIN table2 t2
         ON t1.id = t2.id
         ORDER BY t2.id" ; 

好的,您提供的查询在内部联接操作中工作正常

    SELECT t2.id, t1.data 
      FROM table1 t1
INNER JOIN table2 t2
        ON t1.id = t2.id
  ORDER BY t2.id
将产生:

| id | data |
| 1  | aaa  |
| 2  | bbb  |
| 4  | ccc  |
| id | data   |
| 1  | aaa    |
| 2  | bbb    |
| 3  | (null) |
| 4  | ccc    |
| 5  | (null) |
如果要查看第二个表中的所有值,则需要对table2表执行左联接操作

将产生:

| id | data |
| 1  | aaa  |
| 2  | bbb  |
| 4  | ccc  |
| id | data   |
| 1  | aaa    |
| 2  | bbb    |
| 3  | (null) |
| 4  | ccc    |
| 5  | (null) |

提示:左连接,但t2应该是第一个表。这与jQuery无关。在为你的问题添加标签时请小心。此查询不起作用,这是一个错误的解释。你有错误吗?太多行了?太少了?虽然这样做有效,但我总是避免右外部联接,而是重写查询以使用左外部联接。右外部联接的可读性不如左外部联接。与其尝试这个,我希望得到一些解释,例如,您需要一个外部联接,以便保留t1中不匹配的t2行。只是与预期的结果相比,此结果中缺少两行-但这就是内部联接的工作原理。哈哈,不过我已经更新了答案。