mysql从一个表中查询多个参数?

mysql从一个表中查询多个参数?,mysql,search,select,Mysql,Search,Select,好的,我有一个mysql查询,我想在表1中搜索这两个参数 我将尝试用“php”来展示这个想法 我想查询显示第一个和第二个参数…(两者都匹配) 我希望你能理解我想说的话 好的,这是答案 mysql查询: SELECT table_1 . * , table_2_params . * FROM table_1, table_2_params WHERE table_1.pamat_kat_sad = '756' AND table_1.preces_id = table

好的,我有一个mysql查询,我想在表1中搜索这两个参数
我将尝试用“php”来展示这个想法

我想查询显示第一个和第二个参数…(两者都匹配)
我希望你能理解我想说的话

好的,这是答案 mysql查询:

 SELECT table_1 . * , table_2_params . * 
    FROM table_1, table_2_params
    WHERE table_1.pamat_kat_sad =  '756'
    AND table_1.preces_id = table_2_params.preces_id
    AND (
        (
        table_2_params.params_id =124
        AND table_2_params.nosaukums LIKE  "%EXTEC (Sandvik)%"
        )
        AND (
        table_2_params.params_id =126
        AND table_2_params.nosaukums
        BETWEEN  "2010"
        AND  "2012"
        )
    )
    ORDER BY table_1.preces_id DESC
问题可能是
表\u 2_params.nosaukums
类型是
longtext

如果我只选择使用

    AND (
    table_2_params.params_id =126
    AND table_2_params.nosaukums
    BETWEEN  "2010"
    AND  "2012"
    )
(
    table_2_params.params_id =124
    AND table_2_params.nosaukums LIKE  "%EXTEC (Sandvik)%"
    )
它显示正确的年份。。。 如果我只选择使用

    AND (
    table_2_params.params_id =126
    AND table_2_params.nosaukums
    BETWEEN  "2010"
    AND  "2012"
    )
(
    table_2_params.params_id =124
    AND table_2_params.nosaukums LIKE  "%EXTEC (Sandvik)%"
    )
它还显示正确的值

但是我不能让他们一起工作

请帮帮我

谢谢大家!

问题在于:

 AND (
    (
    table_2_params.params_id =124          #remove this check
    AND table_2_params.nosaukums LIKE  "%EXTEC (Sandvik)%"
    )
    AND (
    table_2_params.params_id =126          #or remove this check
    AND table_2_params.nosaukums
    BETWEEN  "2010"
    AND  "2012"
    )
)

您尝试比较参数id是否同时为124和126。那是行不通的。删除其中一个比较,您的查询应该可以工作!:)

如果需要两组条件,只需使用
。您还应该注意,表之间的联接应该使用
(内部|左)联接执行:

SELECT
    table_1.*
    , table_2_params.* 
FROM
    table_1
    INNER JOIN table_2_params
        ON table_1.preces_id = table_2_params.preces_id
WHERE
    table_1.pamat_kat_sad =  '756'
    AND
    (
        (
            table_2_params.params_id =124
            AND table_2_params.nosaukums LIKE '%EXTEC (Sandvik)%'
        )
        OR
        (
            table_2_params.params_id =126
            AND table_2_params.nosaukums BETWEEN '2010' AND '2012'
        )
    )
ORDER BY
    table_1.preces_id DESC

最后,您的查询可能会执行得很差,因为mysql将无法使用任何带有
和表\u 2_params.nosakums的索引,如“%EXTEC(Sandvik)%”

,但我希望这两组条件都匹配。。。它应该搜索1和2。。。这两个参数,而不仅仅是其中一个……如果您想要1和2,您将始终有一个空响应,因为
table_2_params.params_id=124
table_2_params.params_id=126
不能同时为真。另一方面,如果你想要条件的结合,那就是我所做的。