MySQL中的列='x,y,z'

and*_*ndy 6 php mysql

这是我的情况:我需要选择user_id = x OR y OR z的所有消息.

我在PHP中有一个数组:

users = ('1', '2', '3')
Run Code Online (Sandbox Code Playgroud)

无论如何选择所有消息user_id =其中一个值而没有大量查询:

user_id = '1' OR user_id = '2' OR user_id = '3?'
Run Code Online (Sandbox Code Playgroud)

(我需要接收100多人的消息,因此效率低下)

谢谢

Ry-*_*Ry- 8

是! 您可以使用IN运营商:

user_id IN ('1', '2', '3')
Run Code Online (Sandbox Code Playgroud)

如果您的数组始终是安全的并且包含元素,则可以执行以下操作:

"user_id IN ('" . implode("', '", $users) . "')"
Run Code Online (Sandbox Code Playgroud)

在PHP中也是如此.


Joe*_*lli 8

使用IN子句.

SELECT *
    FROM YourTable
    WHERE user_id IN ('1','2','3')
Run Code Online (Sandbox Code Playgroud)

  • 我将添加因为它可能不会立即明确:IN子句的内容可以是另一个查询.即`WHERE user_id IN(SELECT user_id FROM users WHERE user_type = 100)` (2认同)

Sab*_*ari 6

这很容易做到:

$query = "SELECT * FROM table_name WHERE user_id IN('1','2','3')";
Run Code Online (Sandbox Code Playgroud)

由于您的值在数组中,您可以使用:

$users = array('1', '2', '3');
$user_id = "'" . implode("', '", $users ) . "'";
$query = "SELECT * FROM table_name WHERE user_id IN($user_id)";
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.