2

我有一个非常简单的 mysql 查询,我想从两个表 table1 和 table2 中获取一些“数据”,只要这个“数据”在包含精确“id”的一行中,所以我运行了一个准备好的请求:

'select data from (
    select data from table1 union select data from table2) 
 where id = :id'

但它似乎不起作用(顺便说一句,我只是简单地尝试过'select data from table1, table2 where id = :id ')但它不起作用。有人可以帮忙,我不知道我在哪里错过了什么?

4

4 回答 4

2
 select * from table1  where id = :id
 union all
 select * from table2  where id = :id
于 2012-12-10T10:19:14.680 回答
1

联合在 MySQL 中是复杂且没有根据的,我宁愿依靠 JOIN 来执行我的语句。

于 2013-06-01T08:59:54.227 回答
0

我认为你正在寻找的是一个加入。有多种类型的连接,其中最常见的是LEFT JOININNER JOIN

LEFT JOIN即使匹配的数据不存在,也返回行,并为连接的数据返回 null。

INNER JOIN要求匹配的数据存在,如果匹配的数据不存在,则不返回任何内容。

使用示例INNER JOIN

SELECT
   table1.*,
   table2.*
FROM
   table1
   INNER JOIN table2 ON ( table1.id = table2.id )
WHERE
   id = :id
于 2012-12-10T10:08:35.313 回答
0

选择table1.data,table2.data from table1 where table1.id = table2.id

于 2012-12-10T10:08:47.713 回答