我有一个非常简单的mysql查询,只要这个“数据”在一行中包含一个精确的“id”,我想从两个表table1和table2中获取一些“数据”,所以我运行了一个准备好的请求:
'select data from (
select data from table1 union select data from table2)
where id = :id'
但它似乎不起作用(顺便说一句,我只试过'select data from table1, table2 where id = :id '
)
但它不起作用。有人可以帮忙,我不知道我在哪里错过了什么?
答案 0 :(得分:2)
select * from table1 where id = :id
union all
select * from table2 where id = :id
答案 1 :(得分:1)
在MySQL中,联盟是复杂且无根据的,我宁愿依赖JOIN来执行我的语句。
答案 2 :(得分:0)
我认为你要找的是一个加入。有多种类型的联接,其中最常见的是LEFT JOIN
和INNER JOIN
。
LEFT JOIN
返回行,即使匹配的数据不存在,也为连接的数据返回null。
INNER JOIN
要求匹配的数据存在,并且如果匹配的数据不存在则不返回任何内容。
使用INNER JOIN
的示例:
SELECT
table1.*,
table2.*
FROM
table1
INNER JOIN table2 ON ( table1.id = table2.id )
WHERE
id = :id
答案 3 :(得分:0)
从table1中选择table1.data,table2.data,其中table1.id = table2.id