Mysql 我不能正确地编写正确的SQL查询

Mysql 我不能正确地编写正确的SQL查询,mysql,sql,database,postgresql,qsqlquery,Mysql,Sql,Database,Postgresql,Qsqlquery,我在数据库中有2个表,我正试图根据一些标准筛选一些用户 criterias table +---------+----------------------+--------------------+----------------------+ | user_id | searching_friendship | searching_practice | conversation_subject | +---------+----------------------+-------------

我在数据库中有2个表,我正试图根据一些标准筛选一些用户

criterias table

+---------+----------------------+--------------------+----------------------+
| user_id | searching_friendship | searching_practice | conversation_subject |
+---------+----------------------+--------------------+----------------------+
| 31      |                      |                    | science              |
| 26      |  on                  | on                 | love                 |
| 32      |  on                  | off                | science              |
| 34      |                      |                    |                      |
+---------+----------------------+--------------------+----------------------+


user table
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+
| user_id | user_name  | user_email                  | user_password | user_gender | user_language | language_lvl | last_login       |
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+
| 26      | Furkan     | furkanakgun@windowslive.com | 123           |             | Türkiye      | basic        | 16.06.2019 11:57 |
| 31      | sfsdf      | asdfasdf@hotmail.com        | 123           | Male        | Afrikaans     | basic        | 09.06.2019 20:01 |
| 32      | denemeuser | xxx@hotmail.com             | 123           | Male        | Amharic       | intermediate | 16.06.2019 11:57 |
| 33      | Smith      | ssdf                        | 123           | male        | ing           | upper        | NULL             |
| 34      | luser      | llll@hotmai.com             | 123456        | Male        | Afrikaans     | basic        | 16.06.2019 10:32 |
+---------+------------+-----------------------------+---------------+-------------+---------------+--------------+------------------+

我正在尝试匹配具有相同标准的用户

$userId=$_SESSION['userId'];
$sql="SELECT* FROM criterias WHERE user_id='$userId'";
$query=mysqli_query($conn,$sql);

while($result=mysqli_fetch_assoc($query)){
    $friendshipCheck=$result['searching_friendship'];
    $pracCheck=$result['searching_practice'];
    $conversationSub=$result['conversation_subject'];
}
因此,我得到了最新的标准信息,并试图与其他类似的用户进行匹配

SELECT* FROM users,criterias WHERE (users.user_id=criterias.user_id AND users.user_id!='$userId') AND criterias.searching_friendship='$friendshipCheck' OR criterias.searching_practice='$pracCheck'

但它不起作用。亲爱的朋友们,你知道如何解决这个问题吗?

提供预期结果和你得到的结果将有助于证明最佳解决方案。 在这里,我试图在理解您试图在代码中编写的内容的基础上编写查询:

;WITH  CTE AS
    (
           SELECT  C.*
           FROM    Criterias C
           WHERE   C.user_id = <user_id_input>
    )
    SELECT  *
    FROM    User U
            INNER JOIN Criterias C
                ON U.user_id = C.user_id
    WHERE   EXISTS ( 
                       SELECT 1
                       FROM   CTE 
                       WHERE  CTE.searching_friendship = C.searching_friendship
                       OR     CTE.searching_practice   = C.searching_practice
                   )
     AND        U.user_id != <input_user_id> ;

如果您只想获得与您的用户具有相同条件的用户,则此查询应该可以工作

挑选* 来自用户作为u 内部连接标准为u.user\u id=c.user\u id上的c 其中u.user_id!='$用户ID' 和c.查找友谊=“$friendshipCheck” c.搜索实践=“$pracCheck” 和c.conversation_subject='$conversation_subject'
如果您提供有关查询的预期结果和实际结果的详细信息,这将非常有用。例如,我是一个用户,希望与网站上的某个人聊天。然后选择一些筛选器,如对话主题。假设ı选择了爱,其他两个人选择了爱。所以,我只需要看看谁选择了和我一样的标准,请通过编辑而不是评论来澄清。解释它不起作用。哪一个是mysql还是postgresql?显示正在SQL中执行的实际文本。PS请在代码问题中给出一个-剪切、粘贴和可运行代码;示例输入,具有预期和实际输出,包括逐字错误消息;标签和清晰的说明和解释。这包括您能给出的最少代码,即您显示为OK的代码,由您显示为not OK的代码扩展。调试基础。对于包含DBMS/product的SQL,以及包含约束、索引和基表初始化的DDL。非常感谢。这真的帮了我很大的忙如果答案正确,我将不胜感激。我只是好奇,为什么你要在一个查询中获取给定用户ID的所有属性,然后编写一个单独的查询,在其中输入这些信息,而所有这些都可以在一个查询中完成?这只是一个查询,其中,对于每个用户,我使用join with criterias table获取每个用户的标准,然后仅过滤join操作的结果集,以获取与id=$userId具有相同标准的用户。我返回所有属性,因为我不知道他需要哪些特定属性列,这取决于他选择。是的,它可以在一个查询中完成,但他已经开始这样做了,我只是让查询工作。“也许他有他自己的目的,为什么他要这样做。”斯特夫乔,对不起,我的问题实际上是针对弗坎的。我应该清楚这一点。是的,我看到你在做什么了。就Furkan的2查询方法而言,这看起来不错。