2
取唯一值,现在我有一个交叉引用表,看起来像这样:来自交叉引用表
Table job2pos
╔═══════════╦═════════════╗
║ job_id ║ position_id ║
╠═══════════╬═════════════╣
║ 1 ║ 10 ║
║ 2 ║ 10 ║
║ 2 ║ 12 ║
║ 3 ║ 11 ║
║ 3 ║ 13 ║
║ 4 ║ 10 ║
║ 5 ║ 13 ║
╚═══════════╩═════════════╝
我要选择所有具有job_id
的postion_id = 10
和position_id = 12
,这将导致job_id = 1,2,2,4
。但我只想要job_id = 2
在我提取的结果中只出现一次。
我试过的代码如下:
$positions = ["10","12"];
$sql = "SELECT job2pos.job_id FROM job2pos
WHERE job2pos.pos_id IN (?,?)";
$stmt = $pdo->prepare($sql);
foreach ($positions as $key => &$val) {
$stmt->bindParam($key, $val, \PDO::PARAM_INT);
}
$stmt->execute();
var_dump($stmt->fetchAll(\PDO::FETCH_UNIQUE));
和上面的尝试将会产生如下结果:
array(3) {
[1]=> array(0) {}
[2]=> array(0) {}
[4]=> array(0) {}
}
所以我没有得到独特的价值观和额外的2不重复,但我该如何做到这一点,以便job_id
不会作为索引出现,而是作为数组中的一个值出现?
- P.S.如果你可以指出我的代码中的任何不必要的代码,那也会很棒。
使用'标准'PDO :: FETCH_ASSOC' –
或者'你目前的结果array_keys'选择distinct'。 –
请在** position_id **之后将╬更改为╣。这太接近完美了。 – Mihailo