mysql 使用值进行查询(无子选择)
mysql query using values (no subselect)
由于永久使用 ORM,我不知道如何编写此查询,但我需要在没有 ORM 的情况下编写它。
表格设计:
用户:
|id|username|...
端口:
|id|user_id|port|
我的应用程序获得了用户名,现在我需要使用用户 ID 找到匹配用户名的所有端口以获取端口。
执行 JOIN
查找由 userparam(或任何您称呼的)用户指定的端口:
select u.id, u.username, p.id, p.user_id, p.port
from users u
join ports p on u.id = p.user_id
where u.username = :userparam
(您可以从 SELECT
列表中删除不需要的列。)
users:
id|username|...
ports:
id|user_id|port|
想想最后的 SELECT
行。只需放置一个占位符即可开始
select count(*)
然后正式开始。请问我需要什么 table 才能获取数据 FROM
?
FROM users, ports
这将(从概念上)创建一个新的 table,其中包含每个用户与每个端口匹配的行。
我如何过滤掉这个新 table 中没有的所有数据
适用于我的查询?忽略除 WHERE
之外的所有内容,你告诉它匹配
WHERE user.id == ports.user_id
您可以认为这是对巨大 table 中的行进行过滤,该巨型 table 由您在 FROM
子句中输入的所有 table 的所有行组成。
现在你已经拥有了这些行的所有内容,你可以SELECT
你感兴趣的新 table 中的哪些列。
假设您想要返回任何 port.id (s)。
SELECT port.id
FROM users, ports
WHERE user.id == ports.user_id
更好的语法,使 WHERE
部分靠近 FROM
部分
当你有很多 table 时,这变得很重要,看起来像这样
SELECT port.id
FROM users join ports ON user.id == ports.user_id
由于永久使用 ORM,我不知道如何编写此查询,但我需要在没有 ORM 的情况下编写它。
表格设计:
用户:
|id|username|...
端口:
|id|user_id|port|
我的应用程序获得了用户名,现在我需要使用用户 ID 找到匹配用户名的所有端口以获取端口。
执行 JOIN
查找由 userparam(或任何您称呼的)用户指定的端口:
select u.id, u.username, p.id, p.user_id, p.port
from users u
join ports p on u.id = p.user_id
where u.username = :userparam
(您可以从 SELECT
列表中删除不需要的列。)
users:
id|username|...
ports:
id|user_id|port|
想想最后的 SELECT
行。只需放置一个占位符即可开始
select count(*)
然后正式开始。请问我需要什么 table 才能获取数据 FROM
?
FROM users, ports
这将(从概念上)创建一个新的 table,其中包含每个用户与每个端口匹配的行。
我如何过滤掉这个新 table 中没有的所有数据
适用于我的查询?忽略除 WHERE
之外的所有内容,你告诉它匹配
WHERE user.id == ports.user_id
您可以认为这是对巨大 table 中的行进行过滤,该巨型 table 由您在 FROM
子句中输入的所有 table 的所有行组成。
现在你已经拥有了这些行的所有内容,你可以SELECT
你感兴趣的新 table 中的哪些列。
假设您想要返回任何 port.id (s)。
SELECT port.id
FROM users, ports
WHERE user.id == ports.user_id
更好的语法,使 WHERE
部分靠近 FROM
部分
当你有很多 table 时,这变得很重要,看起来像这样
SELECT port.id
FROM users join ports ON user.id == ports.user_id