MySQL complex join - 无法在第二个表中选择多个列

时间:2011-05-20 13:29:25

标签: mysql join

我无法弄清楚为什么我不能在第二个表中选择多个列。这是我的表格:

Computers:
----------
id, cond, type

Images:
-------
id, foreignid, name, width, height, def

这是我的选择声明:

SELECT
    id, cond, type,
    (SELECT name, width, height FROM images WHERE foreignid = computers.id ORDER BY def DESC LIMIT 1) AS image
FROM computers

这是我得到的错误:

Operand should contain 1 column(s)

2 个答案:

答案 0 :(得分:2)

你想做这样的事吗?

select c.id, c.cond, c.type, i.name, i.width, i.height from computers c
left join images i on i.foreignid=c.id
order by i.def desc limit 1

编辑: 但是join子句取决于你想要什么。 如果您想要所有计算机,请将图像与否使用

computers left join images

如果您想要所有图像,请使用计算机或不使用

computers right join images

如果您只想使用带有计算机图像和图像的计算机

computers inner join images

如果您想使用所有计算机和所有图像

computer outer join images

答案 1 :(得分:0)

SELECT comp.id, comp.cond, comp.type, img.name, img.height, img.width FROM computers comp left join image img on img.foreignid = comp.id

如果您正在寻找的话,将返回一台计算机及其相关图像。