gpt4 book ai didi

php - 具有公共(public)列的 MySQL 2 表仅在存在其他条件时才匹配

转载 作者:行者123 更新时间:2023-11-29 06:11:11 25 4
gpt4 key购买 nike

不确定如何准确解释这一点,但这里是。

我有这些表:

消息:

------------------------
|msgid|clientid|message|
------------------------
|1 |536 |Hello |
------------------------
|2 |543 |Hello |
------------------------
|3 |529 |Hello |
------------------------

客户:

----------------------
|cleintid|wholesaleid|
----------------------
|536 |479 |
----------------------
|543 |480 |
----------------------
|529 |479 |
----------------------

如果消息记录中的客户端 ID 由 clients.wholesaleid = 479 所有,我只想从消息表中提取记录。

因此应该从消息表中提取记录 1 和 3。

我知道如何处理完全独立的多个嵌套查询,但我知道有一种更聪明的方法可以在一个查询中使用纯 SQL 来执行此操作。我一直在学习这个太久了,所以我来这里是为了解决这个问题。

在这种情况下,我通常会做一个简单的查询并循环遍历客户表,查找与批发 ID 匹配的所有客户 ID。我会将它们全部填充到一个数组中,或者当我循环遍历它们时,单独查询该客户端 ID 的所有消息。这很糟糕,我知道有更好的方法。大量循环,循环内,如果我的数据集变大,速度会非常慢。

我知道这是不正确的,但我希望它能帮助说明我正在尝试做的事情。

类似这样但没有多个循环:

SELECT * FROM clients WHERE wholesaleid = 479;

For Each Loop Here

SELECT * FROM messages WHERE clientid=ThisClientID

For Each Loop #2 HERE

Print msgid, clientid, message

End For Each Loop #2

End For Each Loop

抱歉,这太令人困惑了,只是不确定如何更好地解释我现在是如何做的以及我想要达到的目标。

我猜每个人都会告诉我去学习 JOINS,但是,我在这上面花了很多时间,但我不确定它如何适用于我想要完成的事情。

最佳答案

使用 INNER JOIN(cleintid in table clients 可能是您问题中的错字):

SELECT messages.*
FROM messages
INNER JOIN clients
ON messages.clientid = clients.cleintid
AND wholesaleid = 479;

SQLFiddle Demo

关于php - 具有公共(public)列的 MySQL 2 表仅在存在其他条件时才匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38215689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com