SELECT
users.id AS user_id,
shops.id AS shop_id,
networks.id AS network_id
FROM users
LEFT OUTER JOIN shops
ON shops.manager_id = users.id
LEFT OUTER JOIN networks
ON networks.manager_id = users.id
WHERE users.username = ?
AND users.pwd = ?
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
当此查询返回时,shop_id如果从stores表中引用用户,则将为非null,并且同样适用network_id.
请注意,如果多次从商店或网络表中引用用户,则此查询将只生成一行; 我假设您不关心用户与哪个商店/网络相关联,您只想检查这种关联.
或者,此查询也可以工作:
SELECT
users.id AS user_id,
EXISTS (SELECT shops.id
FROM shops
WHERE shops.manager_id = users.id)
AS has_shop,
EXISTS (SELECT networks.id
FROM networks
WHERE networks.admin_id = users.id)
AS has_network
FROM users
WHERE users.username = ?
AND users.pwd = ?
Run Code Online (Sandbox Code Playgroud)
其中一个查询可能比另一个查询更快,具体取决于您在表上设置的索引以及MySQL版本.EXPLAIN如果性能问题,请考虑运行它们.
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |