Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在另一个表中具有相同字符串但uiid和位置不同的OrderBy行_Php_Mysql_Symfony - Fatal编程技术网

Php 在另一个表中具有相同字符串但uiid和位置不同的OrderBy行

Php 在另一个表中具有相同字符串但uiid和位置不同的OrderBy行,php,mysql,symfony,Php,Mysql,Symfony,我将SQL与简单的SQL查询结合使用,如: $query = $em->createQuery("SELECT u FROM User u JOIN u.address a WHERE a.city = 'Berlin'"); $users = $query->getResult(); 我的问题是 我有两张桌子: Table A [UIID name] Table B [UIID] is a reference key of UIID table A 例如

我将SQL与简单的SQL查询结合使用,如:

$query = $em->createQuery("SELECT u FROM User u JOIN u.address a WHERE a.city = 'Berlin'");
$users = $query->getResult();

我的问题是 我有两张桌子:

Table A
[UIID name]

Table B
[UIID] is a reference key of UIID table A
例如(为了简化示例,UIID是一个int):

我喜欢这样做:

SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY NAME
但在表B中的元素之前和表A中的元素之后:

2 Alpha
1 Alpha
3 Beta
4 Charlie
5 Delta
6 Delta
我知道UIIDV1和其他版本的时间戳位置之间存在差异。 我无法修改数据库的id,因此我问自己是否有类似于
like
的指令,用于在不创建带有id和时间戳的新表的情况下进行修改

附言: 我以前犯过一个错误: 我写过:

SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY UIID
但我想说的是:

SELECT UIID NAME
FROM A
GROUP BY UIID,
ORDER BY NAME

通过表的
左连接

SELECT A.UIID, A.name
FROM A LEFT JOIN B
ON B.UIID = A.UIID
ORDER BY B.UIID IS NULL, A.NAME
表达方式:

B.UIID IS NULL
对于
false
true
,计算结果为
0
1
,因此这两个表的所有匹配行都将位于顶部。

或与
一起存在

SELECT A.UIID, A.name
FROM A
ORDER BY EXISTS (SELECT 1 FROM B WHERE B.UIID = A.UIID) DESC, 
         A.NAME
请参阅。
结果:


通过表的
左连接

SELECT A.UIID, A.name
FROM A LEFT JOIN B
ON B.UIID = A.UIID
ORDER BY B.UIID IS NULL, A.NAME
表达方式:

B.UIID IS NULL
对于
false
true
,计算结果为
0
1
,因此这两个表的所有匹配行都将位于顶部。

或与
一起存在

SELECT A.UIID, A.name
FROM A
ORDER BY EXISTS (SELECT 1 FROM B WHERE B.UIID = A.UIID) DESC, 
         A.NAME
请参阅。
结果:


谢谢,我需要按姓名订购(我在这个问题上犯了一个错误)?按UIID从组中选择UIID名称,按名称订购谢谢,我需要按名称订购(我在问题中犯了一个错误)?按UIID、按名称排序从组中选择UIID名称