mysql简单代码_简单MySQL问题

简短的回答是,你不能。你总是要选择固定数量的列。但是,通过使用on关键字,可以大大改进查询的语法。例如:

SELECT

birthdate,

firstName,

lastName

FROM

Persons

INNER JOIN PersonsLastNames

ON Persons.id = PersonsLastNames.id

INNER JOIN PersonsFirstNames

ON Persons.id = PersonsFirstNames.id

WHERE

lastName = 'Anderson'

GROUP BY

lastName, firstName

HAVING

count(lastName) = 1

当然,我的查询在末尾还包含一些额外的条款,这样只会抓取只有一个姓氏的人,但您可以始终删除这些条款。

现在,您可以做的是选择您想要检索的最大数量的这些,然后这样做:

SELECT

birthdate,

lastName,

PersonsFirstNames.firstName,

IFNULL(p.firstName,''),

IFNULL(q.firstName,'')

FROM

Persons

INNER JOIN PersonsLastNames

ON Persons.id = PersonsLastNames.id

INNER JOIN PersonsFirstNames

ON Persons.id = PersonsFirstNames.id

LEFT JOIN PersonsFirstNames p

ON Persons.id = p.id

AND p.firstName <> PersonsFirstNames.firstName

LEFT JOIN PersonsFirstNames q

ON Persons.id = q.id

AND q.firstName <> PersonsFirstNames.firstName

AND q.firstName <> p.firstName

GROUP BY

lastName

但我真的不推荐。最好的办法是检索多行,然后在您使用/开发的任何应用程序中对它们进行迭代。

在开始之前,如果您还不熟悉的话,请确保您已经了解了连接类型(左连接和内部连接)。希望这有帮助。

编辑:在这种情况下,您可能还需要考虑稍微复杂一些的group by子句,例如。

GROUP BY

Persons.id, lastName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值