Php 如何使用SELECT获取具有IN和EQUAL命令的行?

Php 如何使用SELECT获取具有IN和EQUAL命令的行?,php,mysql,sql,select,union,Php,Mysql,Sql,Select,Union,我有一个mysql表,如下所示: 我正在尝试获取nid值的列表,其中tid是19以及53、16或89中的任何值。根据当前表,我希望查询返回10,即=19(第4行)和(53,16,89)(最后一行) 我可以通过以下两个单独的查询得到: SELECT nid FROM {term_node} WHERE tid IN (53,16,89) SELECT nid FROM {term_node} WHERE tid = 19 (术语_节点是屏幕截图中的表格)。我在这个应用程序中使用PHP,因此我

我有一个mysql表,如下所示:

我正在尝试获取
nid
值的列表,其中
tid
19
以及
53、16或89
中的任何值。根据当前表,我希望查询返回
10
,即
=19
(第4行)和
(53,16,89)
(最后一行)

我可以通过以下两个单独的查询得到:

SELECT nid FROM {term_node} WHERE tid IN (53,16,89)

SELECT nid FROM {term_node} WHERE tid = 19
(术语_节点是屏幕截图中的表格)。我在这个应用程序中使用PHP,因此我可以组合这两个查询的结果,以获得所需的结果(即10)。但是我认为有一种方法可以从一个数据库查询中得到这个结果

我读过关于工会的书,但老实说,我不知道如何利用它。
我希望我清楚地回答了这个问题,并提前向您表示感谢

A
UNION
在这里帮不了你。你想要的是一个十字路口。有些数据库有一个关键字可以满足您的需要,但不幸的是,MySQL没有

通过使用内部联接,您可以获得所需的:

SELECT DISTINCT TN1.nid
FROM term_node AS TN1
JOIN term_node AS TN2
ON TN1.nid = TN2.nid
AND TN2.tid = 19
WHERE TN1.tid IN (53, 16, 89)

在线查看它的工作情况:

A
UNION
在这里帮不了你。你想要的是一个十字路口。有些数据库有一个关键字可以满足您的需要,但不幸的是,MySQL没有

通过使用内部联接,您可以获得所需的:

SELECT DISTINCT TN1.nid
FROM term_node AS TN1
JOIN term_node AS TN2
ON TN1.nid = TN2.nid
AND TN2.tid = 19
WHERE TN1.tid IN (53, 16, 89)

在线查看它的工作情况:

您不需要任何联合,只需在其中添加所有tid即可轻松完成 试试这个

SELECT nid FROM {term_node} WHERE tid IN (53,16,89, 19)

您不需要任何联合,这可以通过在WHERE中添加所有tid轻松实现 试试这个

SELECT nid FROM {term_node} WHERE tid IN (53,16,89, 19)

谢谢你的回答,莫耶德。但我需要得到nid的列表,其中nid等于19,并且在(53,16,89)中。再次感谢。谢谢你的回答,莫耶德。但我需要得到nid的列表,其中nid等于19,并且在(53,16,89)中。再次感谢。